Multiply 4D array with 2D array without a for loop

I want to compute this:
for i=1:4
f = f+ norm(reshape(i2k(S(:,:,1,i) .* C,[1,2]) - b(:,:,1,i),[sz^2 1]) ,2)^2;
end
Without a for loop. Because we square the norm we can do that:
sum(abs(i2k(S(:,:,1,:) .* C,[1,2])-b(:,:,1,:)).^2);
But I get an error when I do this
S(:,:,1,:) .* C,[1,2]
Can somebody tell me how this is done correctly?

Answers (1)

Try this,
bsxfun(@times,S(:,:,1,:),C)
but remember, the result you'll get as a 3D matrix.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 20 Nov 2017

Answered:

KL
on 20 Nov 2017

Community Treasure Hunt

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

Start Hunting!