How can I apply ndgrid in loop?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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
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)?
Respuesta aceptada
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
Más respuestas (0)
Ver también
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!