clc
clear a=[1 1 1 1 1]; b=[1 1 ]; c=[1,0.5]; d=[1,0,0.5]; ya=abs(fft(a,16)); yb=abs(fft(b,16)); yc=abs(fft(c,16)); yd=abs(fft(d,16)); figure(1) subplot(311) stem(yb) title('有限长序列b的16点离散傅里叶变换') subplot(312) stem(yc) title('有限长序列c的16点离散傅里叶变换') subplot(313) stem(yd) title('有限长序列d的16点离散傅里叶变换') %线性卷积 line_ab=conv(a,b); %利用傅里叶变换的方法计算循环卷积 fft_a1=fft(a,5); fft_b1=fft(b,5); cirab1=ifft(fft_a1.*fft_b1); fft_a2=fft(a,7); fft_b2=fft(b,7); cirab2=ifft(fft_a2.*fft_b2); %循环卷积的函数: cir_ab1=cconv(a,b,5); cir_ab2=cconv(a,b,7); figure(2) stem(line_ab) title('a,b的线性卷积') figure(3) subplot(211) stem(cirab1) title('利用傅里叶变换求a,b的5点循环卷积') subplot(212) stem(cir_ab1) title('利用函数直接求a,b的5点循环卷积') figure(4) subplot(211) stem(cirab2) title('利用傅里叶变换求a,b的7点循环卷积') subplot(212) stem(cir_ab2) title('利用函数直接求a,b的7点循环卷积') |
|