?? q718.m
字號:
%《MATLAB及在電子信息課程中的應用》第七章例7.18程序q718
% 快速卷積計算
% 電子工業出版社出版 陳懷琛 吳大正 高西全合著 2001年10月初版,2003年7月第二版
%
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,'.');
set(gcf,'color','w') % 設置圖形背景色為白色
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 + -