📄 q718.m
字号:
%《MATLAB在电子信息课程中的应用》第七章例7.18程序q718
% 快速卷积计算
% 电子工业出版社出版 陈怀琛 吴大正 高西全合著 2001年10月
clear;close all
xn=input('请输入x(n)序列:xn= 书上用 sin(0.4*[1:15])');
hn=input('请输入h(n)长度:hn= 书上用 0.9.^(1:20)');
M=length(xn); N=length(hn);
nx=1:M; nh=1:N;
%循环卷积等于线性卷积的条件:循环卷积区间长度L>=M+N-1
L=pow2(nextpow2(M+N-1));%取L为大于等于且最接近(N+M-1)的2的正次幂
tic, %快速卷积计时开始
Xk=fft(xn,L); %L点FFT[x(n)]
Hk=fft(hn,L); %L点FFT[h(n)]
Yk=Xk.*Hk; %频域相乘得Y(k)
yn=ifft(Yk,L);%L点IFFT得到卷积结果y(n)
toc %快速卷积计时结束
subplot(2,2,1),stem(nx,xn,'.');
ylabel('x(n)')
subplot(2,2,2),stem(nh,hn,'.');
ylabel('h(n)')
subplot(2,1,2);ny=1:L;
stem(ny,real(yn),'.');ylabel('y(n)')
tic,
yn=conv(xn,hn); %直接调用函数conv计算卷积与快速卷积比较
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -