How to perform 2 dimensional circular convolution

29 visualizaciones (últimos 30 días)
Palguna Gopireddy
Palguna Gopireddy el 7 de Mzo. de 2022
Comentada: Palguna Gopireddy el 10 de Mzo. de 2022
We have 'conv' and 'conv2' functions in matlab to find 1-D and 2-D linear convolution.
But for circular convolution we have only 'cconv' for 1-D convolution. Is there 2-D circular convolution function in matlab or there is any way to acheive 2-D circular convolution in MATLAB.
I tried using 'conv2(A,B,'same'), but it is not same as 2-D circular convolution.

Respuesta aceptada

Matt J
Matt J el 7 de Mzo. de 2022
function z=cyconv(x,y)
%Non-Fourier domain cyclic convolution
%
% z=cyconv(x,y)
siz=num2cell(size(x));
subs=cellfun(@(n)[2:n,1:n],siz,'uni',0);
x=x(subs{:});
z=convn(x,y,'valid');

Más respuestas (1)

Matt J
Matt J el 7 de Mzo. de 2022
Editada: Matt J el 7 de Mzo. de 2022
Using FFTs
out = ifft2(fft2(A).*fft2(B));

Community Treasure Hunt

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

Start Hunting!

Translated by