How can I apply ndgrid in loop?

3 visualizaciones (últimos 30 días)
kritika joshi
kritika joshi el 31 de Jul. de 2019
Comentada: kritika joshi el 1 de Ag. de 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 comentarios
Guillaume
Guillaume el 31 de Jul. de 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 el 31 de Jul. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

Guillaume
Guillaume el 31 de Jul. de 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 comentarios
Walter Roberson
Walter Roberson el 1 de Ag. de 2019
permute(result, [2 3 4 1])
kritika joshi
kritika joshi el 1 de Ag. de 2019
Thanks a lot.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by