Matlab卷积与反傅里叶变换的问题

为什么两个二维的矩阵的卷积结果却不等于他们傅里叶变换后乘积的傅里叶逆变换呢?理论上是相等的,用一维矩阵验证是相等的啊困惑?望高手赐教!谢谢!
使用“时域卷积与频域相乘等效为傅里叶变换对”的结论需要注意两个条件:

1)卷积为圆周卷积,而不是线性卷积;
2)频域相乘为点乘。

matlab中的conv以及conv2函数都是做的线性卷积,所以在使用这一结论时要进行一定的转换处理。给个例子:

clear all
clc

a = randn(5);
b = randn(3);
[ra,ca] = size(a);
[rb,cb] = size(b);
r = ra+rb-1;
c = ca+cb-1;
result = conv2(a,b,'same')    % 时域卷积
a1 = [a zeros(ra,c-ca);zeros(r-ra,c)];  % 0延拓
b1 = [b zeros(rb,c-cb);zeros(r-rb,c)];
A = fft2(a1);
B = fft2(b1);
result1 = ifft2(A.*B);  % 频域相乘
r_start = floor(rb/2) +1;
r_end = r_start + ra -1;
c_start = floor(cb/2) +1;
c_end = c_start + ca -1;
result1 = result1(r_start:r_end,c_start:c_end)

这样得到的result 与result1的结果就是相当的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值