Superimpose matrices of different sizes

조회 수: 2 (최근 30일)
Dave
Dave 2014년 12월 19일
댓글: Dave 2014년 12월 19일
Hello,
I have matrix A 2x5 of NaN
A=...
[NaN NaN NaN NaN NaN;
NaN NaN NaN NaN NaN]
and another B matrix 2x3:
B=...
[NaN 6 2;
NaN 1 0]
If the elements of B are postive (so not 0 nor NaN) I want to paste those elements into A, call this result matrix C
C=...
[NaN 6 2 NaN NaN;
NaN 1 NaN NaN NaN]
Thanks

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2014년 12월 19일
편집: Azzi Abdelmalek 2014년 12월 19일
EDIT
C=A
B(B==0)=nan
C(1:size(B,1),1:size(B,2))=B
%or
A=nan(2,5)
B=[NaN 6 2;NaN 1 0]
x=B>0;
[ii,jj]=find(x)
idx=sub2ind(size(A),ii,jj)
C=A;
C(idx)=B(x)
  댓글 수: 2
Thorsten
Thorsten 2014년 12월 19일
편집: Thorsten 2014년 12월 19일
This does not work for the entry in B that is 0, which should not be copied.
Dave
Dave 2014년 12월 19일
Thanks Azzi and Thorsten, not allowed to accept both answers here. yeah, doesn't consider the 0 case (before the EDIT changes), but can do C(C==0)=NaN afterwards.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Thorsten
Thorsten 2014년 12월 19일
편집: Thorsten 2014년 12월 19일
This works only if A and B have the same number of rows:
ind = find(B>0);
C = A;
C(ind) = B(ind);

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by