?? 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 + -