Im trying to implement this equation in matlab

3 次查看(过去 30 天)
i have a matrix x[k,l] and vector k'=[-1 -5 3 4 2] and l'= [0 1 5 3 10 15 ] h'= [ 5 4 2 5 4]
how can i shift the matrix circularly by k' and l' and do the convluation with h[k' , l' ]= h' e^2*pi*k' * l' like the equation below
this is the equation that i want to implement it
y[k, l] = ∑k'=-kv to kv ∑l=0 to l' = h[k' , l' ] x[[k − k' ]N , [l − l' ]M] and and [·]N , [·]M denote modulo N and M operations

回答(1 个)

Matt J
Matt J 2023-12-8
It's normally better to use FFTs for cyclic convolution, but if you insist on doing it on the non-Fourier domain, then you can use this:
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');
end

产品


版本

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by