Using ngrid to create a matrix listing all combinations of values from row vectors
2 次查看(过去 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!