How to combine vectors of different length into matrix ?

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...

 Accepted Answer

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);

More Answers (1)

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

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!