Subtract one column from another unless NaN
조회 수: 6 (최근 30일)
이전 댓글 표시
I have a 100x4 double (data) with various NaN values throughout.
345 123 546 864
183 152 NaN NaN
842 NaN 238 945
NaN 283 965 NaN
392 105 932 NaN...
...
I am trying to subtract the first time point (that's not a NaN) from the last time point (that's not a NaN).
Here is the code I am using. It not only does not work, but makes me think there has to be an easier/more efficient manner of solving this.
for i = 1:100
if isreal(data(i,4))
if isreal(data(i,1))
FirstMinusLast(i) = data(i,1) - data(i,4);
elseif isreal(data(i,2))
FirstMinusLast(i) = data(i,2) - data(i,4);
elseif isreal(data(i,3))
FirstMinusLast(i) = data(i,3) - data(i,4);
else
FirstMinusLast(i) = 'N/a';
end
elseif isreal(data(i,3))
if isreal(data(i,1))
FirstMinusLast(i) = data(i,1) - data(i,3);
elseif isreal(data(i,2))
FirstMinusLast(i) = data(i,2) - data(i,3);
else
FirstMinusLast(i) = 'N/a';
end
elseif isreal(data(i,2))
if isreal(data(i,1))
FirstMinusLast(i) = data(i,1) - data(i,2);
else
FirstMinusLast(i)= 'N/a';
end
end
end
댓글 수: 2
답변 (3개)
Totanly
2019년 1월 8일
편집: madhan ravi
2019년 1월 8일
c1=1 %or 2;
c2=3 %or 4
FirstMinusLast=data(:,c1)-data(:,c2); %if any NaN is there it will give NaN
data1=data(data>0);
댓글 수: 0
Totanly
2020년 8월 2일
A=[345 123 546 864
183 152 NaN NaN
842 NaN 238 945
NaN 283 965 NaN
392 105 932 NaN]; %or make your own matrix
i=A>0;
A_new=A(i);
result=A_new(1)-A_new(length(A_new));
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 NaNs에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!