数字信号处理与MATLAB实现
数字信号处理与 MATLAB 实现1. n1=[ns:nf];x1=[zeros(1,n0-ns),1,zeros (1,nf-n0)]; %单位抽样序列的产生2. subplot(2,2,4) 画 2 行 2 列的第 4 个图3. stem(n,x) %输出离散序列,(plot 连续)4. 编写子程序可调用4.1 单位抽样序列 生成函数 impseq.m)(0n[x,m]=impseq(n0,ns,nf); %序列的起点为 ns,终点为 nf,在 n=n0 点处生成一个单位脉冲n=[-5:5];x1=3*impseq(2,-5,5)-impseq(-4,-5,5)x1 =0 -1 0 0 0 0 0 3 0 0 0n=[-5:5];x1=3*impseq(2,-4,5)-impseq(-4,-5,4) %起点到终点长度要一致x1 =0 -1 0 0 0 0 3 0 0 04.2 单位阶跃序列 生成函数 stepseq.m)(nu[x,n]=stepseq(no,ns,nf) %序列的起点为 ns,终点为 nf,在 n=n0 点处生成一个单位阶跃4.3 两个信号相加的生成函数 sigadd.m[y,n]=sigadd(x1,n1,x2,n2)4.4 两个信号相乘的生成函数 sigmult.m[y,n]=sigmult(x1,n1,x2,n2)4.5 序列移位 y(n)=x(n-n0)的生成函数 sigshift.m[y,n]=sigshift(x,m,n0)4.6 序列翻褶 y(n)=x(-n)的生成函数 sigfold.m[y,n]=sigfold(x,n)4.7 evenodd.m 函数可以将任一给定的序列 x(n)分解为 xe(n)和 xo(n)两部分[xe,xo,m]=evenodd(x,n)4.8 序列从负值开始的卷积 conv_m, conv 默认从 0 开始function [y,ny]=conv_m(x,nx,h,nh)有{x(n):nx1 n nx2},{h(n):nh1 n nh2}, 卷积结果序列为 {y(n):nx1+nh1 n nx2+nh2}例. 设 , ,求1132)(zzX122534)(zzX )()(21zXY程序:x1=[1,2,3];n1=-1:1;x2=[2,4,3,5];n2=-2:1;[y,n]=conv_m(x1,n1,x2,n2)结果:y =2 8 17 23 19 15n =-3 -2 -1 0 1 2因此 2123 5937)( zzzY计算 , 得 Z 反变换121)9.0().() zzzX9.0b=1;a=poly([0.9 0.9 -0.9]);[r,p,k]=residuez(b,a)结果:r =0.25000.50000.2500p =0.90000.9000-0.9000k =[]因此得到 ,9.0125)9.01(5.20)( 12zzzzX 9.0相应的 )(.)(()5 nunununn5. [H,w]=freqz[B,A,M]计算出 M 个频率点上的频率响应,存放于 H 向量中,M 个频率存放在 w 向量中,freqz 函数自动将这 M 个频率点均匀设置在频率范围[0, ]之间。若缺省 w 和 M 时,函数自动选取 512 个频率点计算。不带输出向量的 freqz 函数将自动绘制幅频和相频曲线。也可[H,w]=freqz(B,A);plot(w/pi,abs(H)); 绘出幅频特性6. zplane(z,p)绘制出列向量 z 中的零点(以符号 o 表示)和列向量 p 中的极点(以符号 x 表示)以及参考单位圆。7. 傅里叶变换信号时域和频域变换连续对应着非周期,离散对应着周期。一个域的离散必然导致另一个域的周期延拓8. fft 和 ifft:一维快速傅里叶变换和逆傅里叶变换X=fft(x,N)采用 FFT 算法计算序列向量 X 的 N 点 DFT,缺省 N 时, fft 函数自动按 X 的长度计算DFT。当 N 为 2 的整数次幂时,fft 按基 2 算法计算,否则用混合基算法。 ifft 的调用格式类似。9. fft2 和 ifft2: 二维快速正傅里叶变换和逆傅里叶变换(1)Y=fft2(x)数据二维傅里叶变换参数 X 是向量 fft2(x)相当于 fft(fft(x)’)’,即先对 X 的列做一维傅里叶变换,然后再对变换结果的行作一维傅里叶变换;若 X 是向量,则此傅里叶变换即变成一维傅里叶变换 fft; 若 X 是矩阵,则是计算该矩阵的二位傅里叶变换。(2)Y=fft2(X, M, N)通过对 X 进行补零或截断,使得 X 成为(M*N)的矩阵。函数 iff2 的参数应用与函数 fft2 完全相同。10. czt: 线形调频 Z 变换Y=czt(x,m,w,a)此函数计算由 z=a*w.^(-(0:m-1))定义的 z 平面螺旋线上各点的 z 变换,a 规定了起点,w 规定了相邻点的比例,m 规定了变换的长度,后三个变量默认值为 a=1,w=exp(j*2*pi/m)及m=length(x)因此 y=czt(x)就等于 y=fft(x).11. dct 和 idct:离散余弦正变换和离散余弦逆变换Y=dct(x,N)完成如下变换,N 的默认值为 length(x).k=0, 1, …,N-1nnkxKY1)12(cos)(2)(12. fftshiftY=fftshift(x)用来重新排列 X=fft(x)的输出,当 X 为向量时,把 X 的左右两半进行交换,从而将零频分量移至频谱的中心;如果 X 为二维傅里叶变换的结果,它同时将 X 的左右和上下部分进行交换。13. fftfiltY=fftfilt(b,x)采用重叠相加法 FFT 对信号向量 x 快速滤波,得到输出序列向量 y,向量 b 为 FIR 滤波的单位脉冲相应,h(n)=b(n+1),n=0,1,…,length(b)-1.Y=fftfilt(b,x,N)自动选取 FFT 长度 NF=2^nextpow2(N), 输入数据 x 分段长度 M=NF-length(b)+1, 其中nextpow2(N)函数求的一个整数,满足 2^(nextpow2(N)-1)= abs(A)L=pow2(nextpow2(M+N-1)) M, N 分别为序列延拓周期14. 用 DFT 进行谱分析时,必须将序列阶段为长度为 N 的有限长序列。造成频谱泄露和谱间干扰。泄露使频谱变得模糊,分辨率降低;旁瓣引起不同分量间的干扰。截断效应无法完全消除,可以加宽窗和缓慢截断。矩形窗比海明窗的频率分辨率高(泄漏小) ,但谱间干扰大,因此海明窗是以牺牲分辨率来换取谱间干扰的降低。栅栏效应是只能在离散点的地方看到真实的像,其余频谱被遮挡。为减少栅栏效应,可以在时