Using ndgrid in arbitrary dimensions
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi,
I have a 3x20 matrix called b. If I use ndgrid like this:
[xx, xy, xz] = ndgrid(b(1,:),b(2,:),b(3,:));
I get 20x20x20 matrices for each parameter xx,xy and xz which is what I want in the case that b has 3 rows. My problem is, I need to generalize this, for example, b might be 4x20 matrix or 5x20 matrix. In these cases I need to write the code like this:
[xx, xy, xz, xa] = ndgrid(b(1,:),b(2,:),b(3,:),b(4,:));
So my question is, how do I generalize this to an arbitrary M dimension, that is, if I have b as a Mx20 matrix, how can I use ndgrid?
0 comentarios
Respuestas (1)
Sean de Wolski
el 13 de Ag. de 2013
Editada: Sean de Wolski
el 13 de Ag. de 2013
There's a fun exercise in crashing my computer. Don't use a large b ;)
b = magic(3); %example
bc = num2cell(b,1); %cells columnwise
clear bbc; %in case it exists
[bbc{1:numel(bc)}] = ndgrid(bc{:}); %use comma-separated list expansion on both sides
Note, instead of creating four new variables, I create a cell array that contains them. This scales much better!
4 comentarios
Ver también
Categorías
Más información sobre Whos en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!