就可以得出标准频率的响应。
第四章、程序实现
4.1、差分方程
clear all; a=[1,-1,0.8];b=1; x=zeros(1,111); n=[-10:100]; x(1,11)=1;%冲激序列 h=filter(b,a,x);%求脉冲响应 subplot(2,1,1); stem(n,h,'.'); title('respones'); xlabel('n'); ylabel('h(n)'); subplot(2,1,2)
zplane(b,a);%画出零极点图
21
由图可以看出零极点都在单位圆内,说明是个因果稳定的程序。
4.2采样定理
R=0.00005;t=-0.01:R:0.01; A=1;B=-1000; x=A*exp(B*abs(t)); w0=2*pi*2000;%最大频率 k=500;%取样点数
w1=linspace(0,w0,k);%0到w0之间取样点数为k F=x*exp(-j*t'*w1)*R;%连续信号的傅里叶变换 w1=[-fliplr(w1),w1(2:500)];%补充负频率
F=[fliplr(F),F(2:500)];%补充负频率处的F,使左右对称
22
subplot(3,2,1);plot(t*1000,x); xlabel('t'); ylabel('xa(t)'); title('模拟信号'); subplot(3,2,2);
plot(w1/(2*pi*1000),F*1000);
xlabel('频率(单位:Hz)'); ylabel('F*1000') title('连续时间傅立叶变换')
T1=0.0002;n=-30:1:30;x=A*exp(B*abs(n*T1));%离散信号 K=500;
k=floor((-K/2+0.5):(K/2-0.5));%取-k/2到k/2之间的整数 w0=2*pi*k/K;
F1=x1*exp(-j*n'*w0);%离散信号傅里叶变换 F1=real(F1);%取实部 subplot(3,2,3);
stem(n*T1*1000,x1);gtext('5000样本/s的采样'); xlabel('n'); ylabel('x1(n)'); title('离散信号'); subplot(3,2,4); plot(w0/pi,F1)
xlabel('以pi为单位的频率'); ylabel('F1(w)');
23
title('离散时间傅立叶变换');
T2=0.001;n=-30:1:30;x2=A*exp(B*abs(n*T2)); K=500;
k=floor((-K/2+0.5):(K/2-0.5)); w0=2*pi*k/K; F2=x2*exp(-j*n'*w0); F2=real(F2); subplot(3,2,5);
stem(n*T1*1000,x2);gtext('1000样本/s的采样'); xlabel('n'); ylabel('x2(n)'); title('离散信号'); subplot(3,2,6); plot(w0/pi,F2)
xlabel('以pi为单位的频率'); ylabel('F2(w)');
title('离散时间傅立叶变换');
24
从上图的运行可以看到,频率是5000样本/s的离散时间傅里叶变换的图像失真很小,而1000样本/s的图像横线较长,说明失真比较大,从而验证了采样定理。
4.3、FFT
n=-3:4;
x1=[zeros(1,3),ones(1,1),zeros(1,4)];%表示出冲激序列 m=0:7;
subplot(3,2,1);stem(n,x1); xlabel('n');ylabel('x1(n)'); y1=fft(x1,8);求冲击序列的fft subplot(3,2,2);stem(m,abs(y1),'b.');
25