How to set values to NaN when they AREN'T within the given indices

조회 수: 32 (최근 30일)
Addison Collins
Addison Collins 2021년 7월 17일
댓글: Addison Collins 2021년 7월 17일
Hello,
I am attempting to set several values in a large matrix to NaN based on indices that I do not want to have NaN values. I attempted using logicals but matlab doesn't change anything (see photo). In this example, I expect every value but the bottom right to be set equal to NaN. I checked previous posts and this was how it was done in 2014.

답변 (1개)

Jonas
Jonas 2021년 7월 17일
a=ones(3);
[X,Y]=meshgrid(1:3);
a(~(X==3 & Y==3))=NaN;
which equals
a(X~=3 | Y~=3)=NaN;
  댓글 수: 4
Simon Chan
Simon Chan 2021년 7월 17일
If there is an original matrix contains different values and you want to keep part of it, you may try the following:
DataKeep = matrix_original(yind(1):yind(end),xind(1):xind(end),:); % Keep the data from the original matrix
[n,m,k] = size(matrix_original); % k should be 1000 in your case
matrix=nan(n,m,k); % Create a new matrix with NaN only
matrix(yind(1):yind(end),xind(1):xind(end),:)=DataKeep; % Put the data you want to keep in the new matrix
Addison Collins
Addison Collins 2021년 7월 17일
@Simon ChanThat solution worked well. Sorry to both of ya for the poor explanation.

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

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by