How to combine two or more than two matrix
4 次查看(过去 30 天)
显示 更早的评论
Please help me. Here is Example
a=[1 0 1, 1 1 0, 1 1 1] and b=[0 1, 1 0 ]
I want combine these two matrix with each possible combination such as
1 0 1 01
1 0 1 10
1 1 0 01
1 1 0 10
1 1 1 01
1 1 1 10
Total possible solutions are 3(rows of a)*2(rows of b)=6
I have A=119*9 and B=75*12
0 个评论
采纳的回答
Stephen23
2016-9-7
编辑:Stephen23
2016-9-7
>> a = [1,0,1;1,1,0;1,1,1];
>> b = [0,1;1,0];
>> cell2mat(allcomb(num2cell(a,2),num2cell(b,2)))
ans =
1 0 1 0 1
1 0 1 1 0
1 1 0 0 1
1 1 0 1 0
1 1 1 0 1
1 1 1 1 0
There is also the special case where the number rows are not multiples of each other:
>> [repmat(a,size(b,1),1),repmat(b,size(a,1),1)]
ans =
1 0 1 0 1
1 1 0 1 0
1 1 1 0 1
1 0 1 1 0
1 1 0 0 1
1 1 1 1 0
3 个评论
Christos Traianos
2021-12-21
Hi! Thanks for the answer! How [repmat(a,size(b,1),1),repmat(b,size(a,1),1)] could be used for n number of double arrays?
Thanks in advance!
Stephen23
2021-12-21
@Christos Traianos: using ALLCOMB is probably the simplest approach:
C = {[1,0,1;1,1,0;1,1,1],[0,1;1,0]}; % any number of matrices
D = cellfun(@(m)num2cell(m,2),C,'uni',0);
M = cell2mat(allcomb(D{:}))
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!