How can I apply ndgrid in loop?

3 views (last 30 days)
kritika joshi
kritika joshi on 31 Jul 2019
Commented: kritika joshi on 1 Aug 2019
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
Guillaume
Guillaume on 31 Jul 2019
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)?
kritika joshi
kritika joshi on 31 Jul 2019
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

Guillaume
Guillaume on 31 Jul 2019
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
Walter Roberson
Walter Roberson on 1 Aug 2019
permute(result, [2 3 4 1])

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!