Interest Ask!
The convolution is not circular in your case, unless you impose additional conditions. For example, A(1,3) should equal A(2,1) , etc.
You can do this with conv (keeping only the non-zero part with the valid option), which is probably also N * log (N). For example, let
A = [abcd eabc feab gfea];
Then A*x coincides with
conv(fliplr([gfeabcd]),x,'valid').'
Or, as a rule, A*x matches
conv(fliplr([A(end,1:end-1) A(1,:)]),x,'valid').'
Luis mendo
source share