数字信号处理各章节重点知识的matlab实例.docx
《数字信号处理各章节重点知识的matlab实例.docx》由会员分享,可在线阅读,更多相关《数字信号处理各章节重点知识的matlab实例.docx(23页珍藏版)》请在冰豆网上搜索。
数字信号处理各章节重点知识的matlab实例
1数字信号处理各章节重点知识的matlab实例
第1,2章 离散时间信号与系统
例1-1用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。
解MATLAB程序如下:
a=[-201-13];
b=[120-1];
c=conv(a,b);
M=length(c)-1;
n=0:
1:
M;
stem(n,c);
xlabel('n');ylabel('幅度');
图1.1给出了卷积结果的图形,求得的结果存放在数组c中为:
{-2 -4 1 3 1 5 1 -3}。
例1-2用MATLAB计算差分方程
当输入序列为
时的输出结果
。
解MATLAB程序如下:
N=41;
a=[0.8-0.440.360.22];
b=[10.7-0.45-0.6];
x=[1zeros(1,N-1)];
k=0:
1:
N-1;
y=filter(a,b,x);
stem(k,y)
xlabel('n');ylabel('幅度')
图1.2给出了该差分方程的前41个样点的输出,即该系统的单位脉冲响应。
例1-3用MATLAB计算例1-2差分方程
所对应的系统函数的DTFT。
解例1-2差分方程所对应的系统函数为:
其DTFT为
用MATLAB计算的程序如下:
k=256;
num=[0.8-0.440.360.02];
den=[10.7-0.45-0.6];
w=0:
pi/k:
pi;
h=freqz(num,den,w);
subplot(2,2,1);
plot(w/pi,real(h));grid
title('实部')
xlabel('\omega/\pi');ylabel('幅度')
subplot(2,2,2);
plot(w/pi,imag(h));grid
title('虚部')
xlabel('\omega/\pi');ylabel('Amplitude')
subplot(2,2,3);
plot(w/pi,abs(h));grid
title('幅度谱')
xlabel('\omega/\pi');ylabel('幅值')
subplot(2,2,4);
plot(w/pi,angle(h));grid
title('相位谱')
xlabel('\omega/\pi');ylabel('弧度')
第3、4章 离散傅里叶变换及其快速算法
例2-1对连续的单一频率周期信号,按采样频率
采样,截取长度N分别选N=20和N=16,观察其DFT结果的幅度谱。
解此时离散序列
,即k=8。
用MATLAB计算并作图,函数fft用于计算离散傅里叶变换DFT,程序如下:
k=8;
n1=[0:
1:
19];
xa1=sin(2*pi*n1/k);
subplot(2,2,1)
plot(n1,xa1)
xlabel('t/T');ylabel('x(n)');
xk1=fft(xa1);xk1=abs(xk1);
subplot(2,2,2)
stem(n1,xk1)
xlabel('k');ylabel('X(k)');
n2=[0:
1:
15];
xa2=sin(2*pi*n2/k);
subplot(2,2,3)
plot(n2,xa2)
xlabel('t/T');ylabel('x(n)');
xk2=fft(xa2);xk2=abs(xk2);
subplot(2,2,4)
stem(n2,xk2)
xlabel('k');ylabel('X(k)');
计算结果示于图2.1,(a)和(b)分别是N=20时的截取信号和DFT结果,由于截取了两个半周期,频谱出现泄漏;(c)和(d)分别是N=16时的截取信号和DFT结果,由于截取了两个整周期,得到单一谱线的频谱。
上述频谱的误差主要是由于时域中对信号的非整周期截断产生的频谱泄漏。
例2-2用FFT计算两个序列
的互相关函数
。
解用MATLAB计算程序如下:
x=[13-112331];
y=[21-1120-13];
k=length(x);
xk=fft(x,2*k);
yk=fft(y,2*k);
rm=real(ifft(conj(xk).*yk));
rm=[rm(k+2:
2*k)rm(1:
k)];
m=(-k+1):
(k-1);
stem(m,rm)
xlabel('m');ylabel('幅度');
其计算结果如图2.2所示。
例2-3计算两个序列的的互相关函数,其中
x(n)={23521–100123530–1–2012}
y(n)=x(n-4)+e(n),e(n)为一随机噪声,在MATLAB中可以用随机函数rand产生
解用MATLAB计算程序如下:
x=[23521-100123530-1-2012];
y=[000023521-100123530-1-2012];
k=length(y);
e=rand(1,k)-0.5;
y=y+e;
xk=fft(x,2*k);
yk=fft(y,2*k);
rm=real(ifft(conj(xk).*yk));
rm=[rm(k+2:
2*k)rm(1:
k)];
m=(-k+1):
(k-1);
stem(m,rm)
xlabel('m');ylabel('幅度');
计算结果如图2.3(a),我们看到最大值出现在m=4处,正好是y(n)对于x(n)的延迟。
2.3(b)是x(n)的自相关函数,他和y(n)的区别除时间位置外,形状也略不同,这是由于y(n)受到噪声的干扰。
第5章无限长单位脉冲响应(IIR)滤波器的设计方法
例3-1设采样周期T=250μs(采样频率fs=4kHz),用脉冲响应不变法和双线性变换法设计一个三阶巴特沃兹滤波器,其3dB边界频率为fc=1kHz。
[B,A]=butter(3,2*pi*1000,'s');
[num1,den1]=impinvar(B,A,4000);
[h1,w]=freqz(num1,den1);