如何采用MATLAB证明时域采样定理?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何采用MATLAB证明时域采样定理?相关的知识,希望对你有一定的参考价值。

参考技术A %%%%%%%%%构造一个信号函数如下
控制采样频率fs
clear
all;close
all
fs=20000;
t=0:1/fs:0.025;
x=sin(200*2*pi*t)+0.3*sin(5000*2*pi*t);t=0:1/fs:0.025;
x=sin(200*2*pi*t)+0.3*sin(5000*2*pi*t);
figure
subplot(311)
plot(t,x);
subplot(312)
plot(t,sin(200*2*pi*t));
subplot(313)
plot(t,0.3*sin(5000*2*pi*t));

请教个matlab程序问题,帮个忙。

设计方法与步骤:
① 画出连续时间信号 的时域波形及其幅频特性曲线,其中幅度因子A=444.128,衰减因子a=222.144,模拟角频率=222.144;
② 对信号 进行采样,得到采样序列 ,其中T= 为采样间隔,通过改变采样频率可改变T,画出采样频率分别为200Hz,500 Hz,1000 Hz时的采样序列波形;
③ 对不同采样频率下的采样序列进行频谱分析,绘制其幅频和相频曲线,对比各频率下采样序列 和的幅频曲线有无差别,如有差别说明原因。
④ 设系统单位抽样响应为 ,求解当输入为 时的系统响应 ,画出 , , 的时域波形及幅频特性曲线,并利用结果验证卷积定理的正确性(此内容将参数设置为A=1,a=0.4, =2.0734,T=1)。
⑤ 用FFT 对信号 , , 进行谱分析,观察与④中结果有无差别。
⑥ 由采样序列 恢复出连续时间信号 ,画出其时域波形,对比 与原连续时间信号 的时域波形,计算并记录两者最大误差。

四、详细程序及仿真波形分析:
1、连续时间信号x(t)及其200Hz/500Hz/1000Hz频率抽样信号函数x(n)
%绘制信号x(n)的幅度谱和相位谱
n=0:50; %定义序列的长度是50
A=input('请输入A的值 A:'); %设置信号的有关参数
a=input('请输入a的值 a:');
w0=input('请输入w0的值 w0:');
T1=0.005;
T2=0.002;
T3=0.001;
T0=0.001;
x=A*exp(-a*n*T0).*sin(w0*n*T0); %pi 是MATLAB 定义的π,信号乘可采用“.*”
y1=A*exp(-a*n*T1).*sin(w0*n*T1); %pi 是MATLAB 定义的π,信号乘可采用“.*”
y2=A*exp(-a*n*T2).*sin(w0*n*T2); %pi 是MATLAB 定义的π,信号乘可采用“.*”
y3=A*exp(-a*n*T3).*sin(w0*n*T3); %pi 是MATLAB 定义的π,信号乘可采用“.*”
close all %清除已经绘制的x(n)图形
subplot(2,1,1);stem(n,x),grid on %绘制x(n)的图形
title('离散时间信号')
subplot(2,1,2);plot(n,x),grid on
title('连续时间信号')
figure(2)
subplot(3,1,1);stem(n,y1),grid on
title('200Hz理想采样信号序列'); %设置结果图形的标题
subplot(3,1,2);stem(n,y2),grid on
title('500Hz连续时间信号')
subplot(3,1,3);stem(n,y3),grid on
title('1000Hz连续时间信号')
k=-25:25;
W=(pi/12.5)*k;
w=W/pi;
Y1=y1*(exp(-j*pi/12.5)).^(n'*k);
figure(3)
subplot(2,1,1);plot(w,abs(Y1));grid,xlabel('w'),ylabel('幅度');
title('200Hz理想采样信号序列的幅度谱');
axis([-2 2 0 1000]);
subplot(2,1,2);plot(w,angle(Y1));grid,xlabel('w'),ylabel('幅角');
title ('200Hz理想采样信号序列的相位谱')
Y2=y2*(exp(-j*pi/12.5)).^(n'*k);
figure(4)
subplot(2,1,1);plot(w,abs(Y2));grid,xlabel('w'),ylabel('幅度');
title('500Hz理想采样信号序列的幅度谱');
axis([-2 2 0 1000]);
subplot(2,1,2);plot(w,angle(Y2));grid,xlabel('w'),ylabel('幅角');
title ('500Hz理想采样信号序列的相位谱')
Y3=y3*(exp(-j*pi/12.5)).^(n'*k);
figure(5)
subplot(2,1,1);plot(w,abs(Y3));grid,xlabel('w'),ylabel('幅度');
title('1000Hz理想采样信号序列的幅度谱');
axis([-2 2 0 1000]);
subplot(2,1,2);plot(w,angle(Y3));grid,xlabel('w'),ylabel('幅角');
title ('1000Hz理想采样信号序列的相位谱')

这个程序中这几句(
k=-25:25;
W=(pi/12.5)*k;
w=W/pi;
Y1=y1*(exp(-j*pi/12.5)).^(n'*k);
)怎么解释每句意思,请教下,小弟刚接触啊。

参考技术A k=-25:25;指的是k的取值是从-25到25之间,每隔1取一个值;
W=(pi/12.5)*k;指的是W的值为k的值乘以pi(3.1415926……)除以12.5;
w=W/pi;表示w的值为W的值除以pi;
Y1=......;表示Y1的值为后面这个运算的结果,其中exp表示自然指数函数,指数为括号里的值;(...).^(...)表示矩阵的指数函数,底为前面括号里的矩阵,指数为后面括号里的矩阵;n'表示矩阵n的转置追问

不是的,我是问这样做的目地是什么

追答

额,不好意思啊,我不是学信号的,对信号处理不太懂,我只知道这是在干什么,不知道为啥这么干。很抱歉,这里帮不了你了

参考技术B Y1=y1*(exp(-j*pi/12.5)).^(n'*k);
这一句实际上是离散傅里叶变换公式写开后变成
% for k=-25:25
% for n=0:50
% Y1(k+1)=Y1(k+1)+y1[n+2]*exp(-1i*pi/12.5).^(n*k)
你翻翻课本就知道了

以上是关于如何采用MATLAB证明时域采样定理?的主要内容,如果未能解决你的问题,请参考以下文章

简述奈奎斯特时域抽样定理?

数字信号处理 频域采样及恢复(离散频谱到连续频谱) MATLAB

抽样定理是啥??

从Matlab平台进行FFT到ARM平台C语言FFT频谱分析

采样定理的定理历程

数字信号基于matlab轴承故障仿真信号时域波形图+幅度谱图含Matlab源码 001期