# How to change a Data Series contained with Repeated NaNs to become other sequence of NaNs?

조회 수: 2(최근 30일)
Tyann Hardyn 2021년 12월 31일
댓글: Tyann Hardyn 2022년 1월 27일
Hi, community
I want to ask something that is still difficult for me to generate the code in Matlab. The data is simple, that is :
A = [NaN, NaN, 0, 0, 0, NaN, NaN, 0, 0, 0, 0, 0, NaN, NaN, 0, NaN, NaN];
And i just want to re-create the data A, with double NaN unique data, to become :
B = [NaN, 0, 0, 0, 0, NaN, 0, 0, 0, 0, 0, 0, NaN, 0, NaN, 0];
And so on for every double NaN of Data A were changed to become Data B with a single NaN unique data?
Its so difficult for me to create such a code for data A to become data B.... Anyone in Community culd help me in solving my problem here? Thank you so much, im so grateful if someone can help me out.... /.\ /.\ /.\
##### 댓글 수: 2표시숨기기 이전 댓글 수: 1
Tyann Hardyn 2021년 12월 31일
편집: Tyann Hardyn 2021년 12월 31일
If three or more sequent of NaN then it would be :
A = [NaN, NaN, NaN, 0, 0, NaN, NaN, 0, 0, 0, 0, 0, NaN, NaN, NaN, NaN, NaN];
and should become :
B = [NaN, NaN, 0, 0, 0, NaN, 0, 0, 0, 0, 0, 0, NaN, NaN, NaN, NaN, 0];
I just want to remove the last sequance of NaN, Sir... So the last sequence of NaNs should be converted to zero (0) without changing the length of A and B....

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

### 채택된 답변

Stephen23 2021년 12월 31일
A = [NaN, NaN, NaN, 0, 0, NaN, NaN, 0, 0, 0, 0, 0, NaN, NaN, NaN, NaN, NaN]
A = 1×17
NaN NaN NaN 0 0 NaN NaN 0 0 0 0 0 NaN NaN NaN NaN NaN
X = diff([isnan(A),false])<0;
A(X) = 0
A = 1×17
NaN NaN 0 0 0 NaN 0 0 0 0 0 0 NaN NaN NaN NaN 0
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
Tyann Hardyn 2022년 1월 27일
@Image Analyst, thx for your Great Help. Im sorry, cuz i wrongly put the accepted answer.... You re helping me so much

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

### 추가 답변(2개)

Chunru 2021년 12월 31일
편집: Chunru 2021년 12월 31일
A = [NaN, NaN, 0, 0, 0, NaN, NaN, 0, 0, 0, 0, 0, NaN, NaN, 0, NaN, NaN];
idx = isnan(A);
% any repeated nan will be replaced with 0
A(idx == 1 & diff([0 idx]) == 0) = 0
A = 1×17
NaN 0 0 0 0 NaN 0 0 0 0 0 0 NaN 0 0 NaN 0
% replace last nan in sequence with 0
A = [NaN, NaN, NaN, 0, 0, NaN, NaN, 0, 0, 0, 0, 0, NaN, NaN, NaN, NaN, NaN];
idx = isnan(A);
A(diff([idx 0])==-1) = 0
A = 1×17
NaN NaN 0 0 0 NaN 0 0 0 0 0 0 NaN NaN NaN NaN 0
##### 댓글 수: 1표시숨기기 없음
Tyann Hardyn 2022년 1월 1일
편집: Tyann Hardyn 2022년 1월 1일
This is Great, Sir, Thank you so much. Its worked !

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

Walter Roberson 2021년 12월 31일
3 tests to be sure the boundary tests are handled correctly -- ending in double nan, ending in single nan, ending in no nan.
Should probably have similar tests about starting with variable number of nan.
%actual work
DN = @(V) V(~isnan(V) | [~isnan(V(2:end)), true]);
%rest is testing
A = [NaN, NaN, 3, 5, 7, NaN, NaN, 2, 4, 6, 8, 10, NaN, NaN, -3, NaN, NaN]
A = 1×17
NaN NaN 3 5 7 NaN NaN 2 4 6 8 10 NaN NaN -3 NaN NaN
B = DN(A)
B = 1×13
NaN 3 5 7 NaN 2 4 6 8 10 NaN -3 NaN
A2 = A(1:end-1)
A2 = 1×16
NaN NaN 3 5 7 NaN NaN 2 4 6 8 10 NaN NaN -3 NaN
B2 = DN(A2)
B2 = 1×13
NaN 3 5 7 NaN 2 4 6 8 10 NaN -3 NaN
A3 = A(1:end-2)
A3 = 1×15
NaN NaN 3 5 7 NaN NaN 2 4 6 8 10 NaN NaN -3
B3 = DN(A3)
B3 = 1×12
NaN 3 5 7 NaN 2 4 6 8 10 NaN -3
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
Tyann Hardyn 2022년 1월 1일
In case 2, Sir. Because i just want to convert the last sequence of NaNs to become 0. Im sorry for my bad explanations....

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

### 범주

Find more on Descriptive Statistics in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by