vector problem , Suma de vectores

Como podria dar el valor del segundo vector al primero donde haya 0 , ejemplo lo haga 1 por uno
(solo lo cambie los valores(2) del vector B , rellenen los ( 0 ) del vector A , pero solo hasta la longitud del vector A (length))
por ejemplo:
A=[ 1 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 1 0 ];
B=[ 2 0 .5 1.4 0 .88 0 .45 .49 0 0 .23 0 .39 .18 0 0 -0.15 0 -.12 0 -.22 0 1.7 -.25 .41 -.35 -.12 ];
R=[ 1 2 .5 1.4 .88 1 1 .45 1 .49 .23 1 1 1 1 .39 .18 -.15 1 -.22 ];
se que podria ser con un for, pero aun no logro interpretarlo ?
por favor podrian ayudarme

2 Commenti

Your example does not make any sense to me. Please explain more clearly.
decia que los valores(2) del vector B ,rellene los ( 0 ) del vector A , pero solo hasta la longitud del vector A (length)

Accedi per commentare.

 Risposta accettata

Cris LaPierre
Cris LaPierre il 12 Ago 2020
Modificato: Cris LaPierre il 13 Ago 2020
Con su ejemplo, no necesitas B. Parece que el vector R es el vector A, pero los valores de 0 han sido cambiado a 2. Es esto lo que quieres hacer?
R = A;
R(R==0)=2;
R = 1×25
1 2 2 2 2 1 1 2 1 2 2 1 1 1 1 2 2 2 1 2 1 2 2 1 2

5 Commenti

No, en si b tiene distintos valores , solo era un ejemplo de como podria sustituir los valores > y < a 0 de b dentro de los valores (0) de A con su misma longitud
Cris LaPierre
Cris LaPierre il 12 Ago 2020
Modificato: Cris LaPierre il 12 Ago 2020
Me parece que hayas equivocado en algunos valores de R (indicado con "^").
A=[ 1 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 1 0 ];
B=[ 2 0 .5 1.4 0 .88 0 .45 .49 0 0 .23 0 .39 .18 0 0 -0.15 0 -.12 0 -.22 0 1.7 -.25 .41 -.35 -.12 ];
R=[ 1 2 .5 1.4 .88 1 1 .45 1 .49 .23 1 1 1 1 .39 .18 -.15 1 -.22 ];
^ ^ ^ ^ ^ ^
Mi resultado:
1 2 .5 1.4 2 1 1 .45 1 2 2 1 1 1 1 2 2 -0.15 1 -0.12
Lo que hice:
R = A;
R(A==0) = B(A==0);
R(R==0)=max(B)
En esta parte que realiza
R(A==0) = B(A==0);
R(R==0)=max(B)
Podrias explicar ?
% Remplaza los valores de 0 con el valor correspondiente de B
R(A==0) = B(A==0);
% Remplaza los valores de 0 que queda con el valor maximo de B
R(R==0)=max(B)
Muchas Gracias

Accedi per commentare.

Più risposte (1)

David Hill
David Hill il 12 Ago 2020
R=A;
a=A==0;
b=B(B~=0);
R(a)=b(1:nnz(a));

Categorie

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by