收获:
(1)DFT的循环卷积特性(已数学证明,需要的小伙伴可以联系我发给你,是手写版,就不贴这里了)
matlab程序如下:
% initial matlab workspace
% 验证DFT做卷积和直接卷积的异同 page25
clc
clear
close all
% 数据设置
x = [ 1 3 -1 5 2 6 4 -2];
y = [ 1 2 3 ];
% 提取数据长度
N1 = length(x);
N2 = length(y);
% 直接做卷积
result1 = conv( x, y );
% 显示结果
fprintf('直接卷积结果:\n');
disp( result1 )
% 直接DFT做卷积
result2 = ifft( fft( x, max(N1,N2) ).*fft( y, max(N1,N2) ) );
% 显示结果
fprintf('直接DFT做卷积结果:\n');
disp( result2 )
% 补零之后 DFT做卷积
len = N1 + N2 - 1;
bit = ceil( log2(len) );
len = 2^bit;
result3 = ifft( fft( x, len ).*fft( y, len ) );
% 提取result3的前面N1+N2-1个数据
result3 = result3(1:N1+N2-1);
% 显示结果
fprintf('补零之后DFT做卷积结果:\n');
disp( result3 )
matlab程序结果如下:
直接卷积结果:
1 5 8 12 9 25 22 24 8 -6
直接DFT做卷积结果:
9.0000 -1.0000 8.0000 12.0000 9.0000 25.0000 22.0000 24.0000
补零之后DFT做卷积结果:
1.0000 5.0000 8.0000 12.0000 9.0000 25.0000 22.0000 24.0000 8.0000 -6.0000