Using ndgrid in arbitrary dimensions
9 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
Sean de Wolski
2013 年 8 月 13 日
編集済み: Sean de Wolski
2013 年 8 月 13 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!