How to insert data to a matrix based on index values stored in a matrix?
조회 수: 7 (최근 30일)
이전 댓글 표시
Hello!
I am a beginner in Matlab and would like to ask a question regarding inserting NaN- values to a matrix according to index values that are stored in a matrix.
I have the following case:
a is a matrix containing data I want to insert NaN- values to the start and end of the vector.
a = vector 250x111
b is a matrix where first row has index values of the start cut-off point and second row information of end cut-off point. For example start cut-off point could be 20 and end cut-off point 105 for a certain data point.
b = matrix 2x111
I believe I can implement this with following by using for- loop through data (example for the first data point):
a( 1:b(1,1) ) = NaN;
a( b(2,1):end) = NaN;
However, I am wondering if there is a way or function to conduct this smoothly? I have noticed while reading this forum that there is usually more efficient ways than using for- loops to conduct this kind of operations and there for wanted to ask for tips.
Thank you already in advance!
댓글 수: 2
Stephen23
2021년 6월 16일
As you have just one vector, surely this is just:
a(1:max(b(1,:))) = NaN;
a(min(b(2,:)):end) = NaN;
(note that in your example you have swapped the row and column indexing).
채택된 답변
Stephen23
2021년 6월 17일
편집: Stephen23
2021년 6월 17일
a = randi(9,7,5)
b = [2,2,3,1,2;6,5,7,6,5]
rwv = 1:size(a,1);
idx = rwv(:)<=b(1,:) | rwv(:)>=b(2,:);
a(idx) = NaN
If you are using a MATLAB version prior to R2016b replace both of the logical comparisons with BSXFUN and function handles to the same logical functions.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!