create a array base on specific condition ?

14 vues (au cours des 30 derniers jours)
MUKESH KUMAR
MUKESH KUMAR le 30 Août 2018
Commenté : MUKESH KUMAR le 31 Août 2018
I had a array like this
A=[0 0 0 10 0 0 0 0 8 0 0 5 0 0 0 3 0 2 0 0 0 1 0 0 0];
and now I want to create a array B like this in which
B(4)=10-8=2;
[B(4)=A(4)-next upcoming non zero value ],
B(9)=8-5=3;[B(9)=A(9)-next non zero value]
and similarly for
B(12)=5-3=2;
B(16)=3-2=1;
B(18)=2-1=1;
B(22)=1;
and rest of the B values are zero. thanks
  2 commentaires
MUKESH KUMAR
MUKESH KUMAR le 30 Août 2018
In the B matrix, I just want to put the difference of number at that position to the next non zero number.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 30 Août 2018
Modifié(e) : Stephen23 le 30 Août 2018
>> idx = A~=0;
>> A(idx) = [-diff(A(idx)),1]
A =
0 0 0 2 0 0 0 0 3 0 0 2 0 0 0 1 0 1 0 0 0 1 0 0 0
  5 commentaires
MUKESH KUMAR
MUKESH KUMAR le 31 Août 2018
sorry for that I found correction needed from my side, thanks alot.

Connectez-vous pour commenter.

Plus de réponses (1)

jonas
jonas le 30 Août 2018
v=A(find(A~=0));
vid=find(A~=0);
B=A
B(vid)=B(vid)-[v(2:end) 0]
not the most elegant solution

Catégories

En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by