Azzera filtri
Azzera filtri

Make spceficic array values zero.

1 visualizzazione (ultimi 30 giorni)
Hi Mathworks community!
I'm having trouble trying to make some of my array values zero. This array corresponds to my Input:
Input = [-1 0 -1 0 0 NaN NaN NaN NaN -1 0 -1 -1 -1 0 NaN NaN NaN 0 0 -1 0 -1 NaN NaN NaN]
I'd like to make everything inside the array zero, but the last -1 before every NaN series. This should be the expected Output:
Output = [0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 0 0]
Could someone please help me out?
Thank you,
Santos

Risposta accettata

David Hill
David Hill il 18 Mar 2021
a=find(diff(isnan(Input))==1);
b=find(Input==-1);
Output=zeros(size(Input));
for k=a
Output(b(find(b<=k,1,'last')))=-1;
end
  3 Commenti
David Hill
David Hill il 18 Mar 2021
You could do something like:
Input = [-1 0 -1 0 0 NaN NaN NaN NaN -1 0 -1 -1 -1 0 NaN NaN NaN 0 0 -1 0 -1 NaN NaN NaN];
Output=zeros(size(Input));
idx=[];
for k=1:length(Input)
if Input(k)==-1
Output(k)=-1;
idx=[idx,k];
end
if isnan(Input(k))
Output(idx(1:end-1))=0;
idx=[];
end
end
Santos García Rosado
Santos García Rosado il 22 Mar 2021
Thank's for the quick feed back and help!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Data Type Identification in Help Center e File Exchange

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by