Circular vs. linear convolution of 2D data

7 ビュー (過去 30 日間)
William Thielicke
William Thielicke 2019 年 8 月 23 日
コメント済み: William Thielicke 2019 年 8 月 27 日
Hi, there is an example for 1D data and circular vs linear convolution here:
If I want to do this with 2D data, how do I zero-pad my data? I mean in which side of the matrix do I add zeros? Everywhere? Thank you! William


Devineni Aslesha
Devineni Aslesha 2019 年 8 月 26 日
Hi William,
In order to zero-pad a 2D data i.e. matrix, padding should be in such a way that the row length is equal to r1+r2-1 and column length is equal to c1+c2-1 where r1 and r2 are the number of rows and c1 and c2 are the number of columns of the 1st and 2nd matrices respectively.
Use the below code for reference.
rng default;
x = rand(2);
y = rand(3);
c = conv2(x,y);
xpad = [x zeros(size(x,1),size(y,2)-1); zeros(size(y,1)-1,size(x,2)+size(y,2)-1)];
ypad = [y zeros(size(y,1),size(x,2)-1); zeros(size(x,1)-1,size(y,2)+size(x,2)-1)];
c1 = ifft2(fft2(xpad).*fft2(ypad));
  1 件のコメント
William Thielicke
William Thielicke 2019 年 8 月 27 日
Thank you very much!


その他の回答 (0 件)


Help Center および File ExchangeFourier Analysis and Filtering についてさらに検索


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by