How can I apply ndgrid in loop?

Hi, I have three matrices A=[60x111], B=[60,11],C=[60,101];
here, N=60, a=111,b=11,c=101
for i=i:N
[Nd{:,i}] = ndgrid(1:a, 1:b, 1:c);
end
I want to use Nd{:,i} for each row of A,B,C. My output will be a 4 dim matrix (111x11x101x60) obtaind from final multiplication of
A(Nd{:i}).*B(Nd{:i}).*C(Nd{:i}). I dont know how to do that.
Thanks in advance.

2 Comments

I'm not clear on what you're trying to do. Currently your loop just does the same calculation 60 times.
Can you provide a example of inputs and desired output, with smaller size matrices (e.g. N = 3, a = 2, b = 3, c = 4)?
For A=rand(3,2), B=rand(3,3),C=rand(3,4),D=rand(3,1), I actually want to multiply these matrices (A, B, C,D) using ndgrid. So that I will get a 4 dim matrix.

Sign in to comment.

 Accepted Answer

It's not any clearer what you want, since you don't define what you mean by multiply and since ndgrid has nothing to do with multiplication.
Perhaps, you're looking for this:
result = A .* permute(B, [1, 3, 2]) .* permute(C, [1, 3, 4, 2])
which will give you 4D matrix of M x N x P x Q for A of size M x N, B of size M x P and C of size M x Q.

3 Comments

Thank you so much for your answer. But I want to arrenge it in (NxPxQxM) order with multiplication of D also.
permute(result, [2 3 4 1])
Thanks a lot.

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!