Effacer les filtres
Effacer les filtres

How to combine vectors of different length into matrix ?

1 vue (au cours des 30 derniers jours)
Neelabh
Neelabh le 18 Juin 2012
Actually..what I want to do is...
I have a vector A =[ 1 2 3 4 5] and a matrix B = [3 4 5 0 0; 1 2 4 5 0; 4 5 0 0 0]
I want save setdiff(A,B(i,:)) i.e. difference of each row of B from A
[1 2] , [3], [1 2 3] into a matrix in the form of [1 2 0; 3 0 0; 1 2 3] (padding with '0')
Please help....
Thanks...

Réponse acceptée

Sean de Wolski
Sean de Wolski le 18 Juin 2012
I would just use a for-loop and some fun indexing:
A =[ 1 2 3 4 5];
B = [3 4 5 0 0; 1 2 4 5 0; 4 5 0 0 0];
sz = size(B);
C = zeros(sz);
nkeep = -inf; %how many columns to keep?
for ii = 1:sz(1)
temp = setdiff(A,B(ii,:));
ncurr = numel(temp);
nkeep = max(nkeep,ncurr);
C(ii,1:ncurr) = temp;
end
C = C(:,1:nkeep);

Plus de réponses (1)

Thomas
Thomas le 18 Juin 2012
Just for fun.. Another complicated way..
A =[ 1 2 3 4 5];
B = [3 4 5 0 0; 1 2 4 5 0; 4 5 0 0 0];
for ii=1:size(B,1)
c(ii,:)=[setdiff(A,B(ii,:)),zeros(1,length(B)-length(setdiff(A,B(ii,:))))];
end
c

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by