How to select the last 6 values in a column?
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi everyone.
I have a doubt. I need to do some horizontal interpolation and, to do it, i must replace NaN's with 0's (zeros).
I already have done the interpolation with the NaN's in the beginning of the data serie, but my problem starts within the last 6 values.
Here's an example:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/692784/image.jpeg)
To replace the NaN's that appears in the first 6 rows, i made this script:
for c=1:4
x=isnan(DD(1:6,c));
DD(x,c)= 0;
end
And everything went well.
Now, I must replace any NaN that appears in the last 6 rows of all columns. I tried to create a code for it, but it's not working
here it goes:
[row,col,page]=size(DD);
for c=1:4
y=isnan(DD(row-5:row,c));
DD(y,c)=0;
end
Anyone can help me, please?
It's very meaningful to me.
댓글 수: 0
채택된 답변
Image Analyst
2021년 7월 22일
편집: Image Analyst
2021년 7월 22일
Why not simply do:
DD(isnan(DD)) = 0;
Or if you really need to replace only nans in the last 6 rows only, and leave the others, you can do
mask = isnan(DD);
mask(1:end-5, :) = false; % Ignore all up to the 6th row from the bottom by setting the mask to false there.
DD(mask) = 0;
To set nans to 0 in the first 6 rows:
mask = isnan(DD);
mask(7:end, :) = false; % Ignore all rows after the 6th row.
DD(mask) = 0;
Or to do the first 6 and last 6 all in one operation:
mask = isnan(DD);
mask(7:end-5, :) = false; % Ignore middle rows.
DD(mask) = 0;
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!