Using ngrid to create a matrix listing all combinations of values from row vectors
1 回表示 (過去 30 日間)
古いコメントを表示
Hi, I have the following vectors
A= [1 2 3 4];
B= [1 2];
C= [1 2 3 6 7 8];
D= [1 3 6];
and I want to create a matrix 144x4 listing in each row 1x4 a possible combination of elements from the vectors above in the order A(i) B(j) C(h) D(k). I could use ndgrid, but I don't know how to create the final matrix listing in each row a specific combination of values.
0 件のコメント
採用された回答
Andrei Bobrov
2013 年 12 月 9 日
編集済み: Andrei Bobrov
2013 年 12 月 9 日
A= [1 2 3 4];
B= [1 2];
C= [1 2 3 6 7 8];
D= [1 3 6];
CC = {A,B,C,D};
n = cellfun(@numel,CC);
n1 = cumsum(n);
i0 = fullfact(n);
idx = bsxfun(@plus,i0,[0, n1(1:end-1)]);
v = cat(2,CC{:});
out = v(idx);
ndgrid instead fullfact
k = cellfun(@(x)1:x,n,'un',0);
[i4,i3,i2,i1] = ndgrid(k(end:-1:1));
i0 = [i1(:),i2(:),i3(:),i4(:)];
0 件のコメント
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Resizing and Reshaping Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!