Using ndgrid in arbitrary dimensions
9 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (1)
Sean de Wolski
il 13 Ago 2013
Modificato: Sean de Wolski
il 13 Ago 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 Commenti
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!