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 线性卷积\'); 

离散时间系统及离散卷积