1. DFT与IDFT
function [XK] = dft(xn,N) %UNTITLED 此处显示有关此函数的摘要 % 此处显示详细说明 n=0:1:N-1; k=n; WN=exp(-1i*2*pi/N); nk=n\'*k; WNnk=WN.^nk; XK=xn*WNnk end
function [XK] = idft(Xk,N) %UNTITLED2 此处显示有关此函数的摘要 % 此处显示详细说明 n=0:1:N-1; k=n; WN=exp(-1i*2*pi/N); nk=n\'*k; WNnk=WN.^(-nk); XK=(xn*WNnk)/N end
2 差分方程求序列及DFT
clc; clear; b=[1,0]; a=[1,-1]; %y(n)-y(n-1)=x(n) y_1=1; x0=0; x=1:10; %激励序列x(n) y_0=1; y=[y_0]; for n=2:10 y=[y,y(end)+x(n)]; %序列递推 end subplot(1,2,1) stem(y); xlabel(\'n\'); ylabel(\'y(n)\'); title(\'递推后的序列y\'); subplot(1,2,2) XK=dft(y,10); stem(XK); xlabel(\'n\'); ylabel(\'X(k)\'); title(\'DFT:y\');
3 幅频特性与相频特性
%实验一(2) 幅频特性与相频特性计算,画出零极点 clc; %清除命令行 close all; %清除窗口 figure b=[0,1]; a=[1,-2,1]; %选用系统函数为:H(z)=z/(1-z)^2 [r,p,k]=residue(b,a) %求z反变换 zplane(b,a);title(\'零极点图\'); %零极点图,z=1是二阶极点 figure n=0:10; h=impz(b,a,11); stem(n,h,\'filled\'); title(\'冲激响应h(n)\'); %冲激响应图,h(n)=n*u(n) figure w=pi*freqspace(100); freqz(b,a,w); title(\'幅频特性与相频特性\'); %系统频率响应的幅频特性和相频特性图
4 FFT 求卷积
clear; xn=sin(0.4*[1:15])\';hn=0.9.^(1:20)\'; M=length(xn);N=length(hn); nx=1:M;nh=1:N; %L>=N+M+1; L=pow2(nextpow2(M+N-1)); tic Xk=fft(xn,L);Hk=fft(hn,L); Yk=Xk.*Hk; yn=ifft(Yk,L); toc tic, yn1=conv(xn,hn); toc subplot(4,1,1),stem(1:15,xn,\'filled\',\'k\');title(\'序列一\'); subplot(4,1,2),stem(1:20,hn,\'filled\',\'k\');title(\'序列二\'); subplot(4,1,3),stem(1:(M+N-1),yn(1:(M+N-1)),\'filled\',\'k\');title(\'fft ifft\'); subplot(4,1,4),stem(1:(M+N-1),yn1,\'filled\',\'k\');title(\'conv\');
可以看到内置函数的速度要快很多
5 线性卷积
%实验一(3) 序列的线性卷积计算 clc; clear; x=[3,11,7,0,-1,4,2]; %序列1 h=[2,3,0,-1,2,1]; %序列2 y=conv(x,h) %求线性卷积,并输出结果 subplot(4,1,1) stem([0:length(x)-1],x,\'filled\'); %序列1图像 xlabel(\'n\'); ylabel(\'幅度\'); title(\'x\'); subplot(4,1,2) stem([0:length(h)-1],h,\'filled\'); %序列2图像 xlabel(\'n\'); ylabel(\'幅度\'); title(\'h\') subplot(4,1,3) stem([0:length(y)-1],y,\'filled\'); %线性卷积结果图像 xlabel(\'n\'); ylabel(\'幅度\'); title(\'线性卷积\') % dft方法 M=size(x,2);N=size(h,2); L=M+N-1; x1=zeros(1,L);x1(1:M)=x; h1=zeros(1,L);h1(1:N)=h; xk=dft(x1,L);hk=dft(h1,L); wk=xk.*hk y2=idft(wk,L) subplot(4,1,4) stem([0:L-1],y2,\'filled\'); xlabel(\'n\'); ylabel(\'幅度\'); title(\'DFT 线性卷积\');
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:离散时间系统及离散卷积 - Python技术站