I WANT TO CREATE MATRIX COMBINATION

2 visualizzazioni (ultimi 30 giorni)
e.g. A = [1 2 3] B = [4,5,6]
I want the new matrix c to be
C = [1 3; 1 5; 1 6; 2 4; 2 5; 2 6; 3 4; 3 5; 3 6]

Risposta accettata

Karim
Karim il 6 Gen 2023
% setup the original data, note the shape!
A = [1;2;3];
B = [4;5;6];
% create the combinations
C = [ repmat(A,numel(B),1) reshape( repmat(B',numel(A),1),[],1) ]
C = 9×2
1 4 2 4 3 4 1 5 2 5 3 5 1 6 2 6 3 6

Più risposte (1)

Dyuman Joshi
Dyuman Joshi il 6 Gen 2023
A = [1 2 3];
B = [4 5 6];
nA=numel(A);
nB=numel(B);
%If you have Stats and ML Toolbox
y=fullfact([nA nB]);
C=[A(y(:,2));B(y(:,1))]'
C = 9×2
1 4 1 5 1 6 2 4 2 5 2 6 3 4 3 5 3 6
%otherwise
z=dec2base(0:nA*nB-1,max(nA,nB))-47;
D=[A(z(:,1))' B(z(:,2))']
D = 9×2
1 4 1 5 1 6 2 4 2 5 2 6 3 4 3 5 3 6
%another method using ndgrid
n=2; %two inputs A and B
[E{flip(1:n)}]=ndgrid(B,A);
reshape(cat(n,E{:}),'',n)
ans = 9×2
1 4 1 5 1 6 2 4 2 5 2 6 3 4 3 5 3 6

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by