How to add 1 matrix to another matrix ?
1 次查看(过去 30 天)
显示 更早的评论
I have 2 matrices with different size as show below and just want to concatenate both of them. I know 2nd matrix have 1st 6 columns entries that are lying in b/w 1st matrix somewhere, so now i just want to add last 2 column values to 1st matrix of there corresponding rows of 1st matrix. Can someone help me how to write syntax for this ?
4 个评论
采纳的回答
Star Strider
2016-4-27
编辑:Star Strider
2016-4-27
One approach, taking advantage of the fact that both of your matrices are sorted by the first column:
M1 = sortrows(rand(15, 4), 1); % Create 1st Matrix & Sort By Column #1
M2 = [M1(1:5:end,:) rand(3,2)]; % Create 2nd Matrix & Add Columns #5 & #6
idx = find(ismember(M1(:,1), M2(:,1))); % Find Indices Of Matching Column #1 Entries
M1 = [M1 zeros(size(M1,1),2)]; % Add Zeros To End Of ‘M1’
M1(idx,5:6) = M2(:,5:6); % Fill Columns #5 & #6 With Same Values From ‘M2’
Since you are dealing with floating-point numbers, if you have R2015a or later, you would likely best use ismembertol instead of ismember to guarantee that your data match.
2 个评论
Star Strider
2016-4-27
My pleasure.
I’m hoping that your matrix entries are exact, so that ismember will work. If not, we will work on a way to use a tolerance with it. Rounding the first column of each matrix to a particular number of decimal places first would likely be easiest.
更多回答(1 个)
Azzi Abdelmalek
2016-4-27
[n1,m1]=size(x)
[n2,m2]=size(y)
z=zeros(n1,m2)
idx=ismember(x,y(:,1:m1),'rows')
z(idx,:)=y
z(~idx,1:m1)=x(~idx,:)
另请参阅
类别
在 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!