Azzera filtri
Azzera filtri

Superimpose matrices of different sizes

1 visualizzazione (ultimi 30 giorni)
Dave
Dave il 19 Dic 2014
Commentato: Dave il 19 Dic 2014
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

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 19 Dic 2014
Modificato: Azzi Abdelmalek il 19 Dic 2014
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 Commenti
Thorsten
Thorsten il 19 Dic 2014
Modificato: Thorsten il 19 Dic 2014
This does not work for the entry in B that is 0, which should not be copied.
Dave
Dave il 19 Dic 2014
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.

Accedi per commentare.

Più risposte (1)

Thorsten
Thorsten il 19 Dic 2014
Modificato: Thorsten il 19 Dic 2014
This works only if A and B have the same number of rows:
ind = find(B>0);
C = A;
C(ind) = B(ind);

Categorie

Scopri di più su Creating and Concatenating Matrices 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