I am using the valid convolution using convn( T, a, 'valid').
I have run the code below:
T = randn(384,384,8);
a = randn(5,5,8);
b = randn(380,380,1);
tic; convn(T,a,'valid'); toc
tic; convn(T,b,'valid'); toc
The reuslt in my computer is
Elapsed time is 0.002837 seconds.
Elapsed time is 0.016301 seconds.
Thus the the latter is much slower compared to fomer one.
However, in terms of flops, or only in terms of multiplications
takes 5*5*8*(384-5+1)*(384-5+1)*(8-8+1) = 28880000 multiplications
also takes 380*380*1*(384-380+1)*(384-380+1)*(8-1+1) = 28880000 multiplications
So why are the two computing time so different?
And is there some ways to implement the convn(T,b,'valid') much faster?