Remove rows in matrix A if not member of matrix B
조회 수: 4 (최근 30일)
이전 댓글 표시
Hi all,
I have two matrices, and I am trying to remove rows in one for numbers which are not part of the other. Below is my attempt:
trials;
for x = 1:256
if ~ismember(trials,x);
rows2remove=[x];
imagesAll(rows2remove,:)=[];
end
% imagesCut =
end
But it is not working and I get the following error message (I guess because it keeps deleting rows?):
Matrix index is out of range for deletion.
Error in samplecode (line 21)
imagesAll(rows2remove,:)=[];
Please could anyone help me with my code? Many thanks
댓글 수: 0
채택된 답변
Stephen23
2017년 6월 30일
편집: Stephen23
2017년 6월 30일
MATLAB works best when working on entire arrays at once, whereas using a loop and removing rows like that is inefficient and not recommended.
>> tryIdx = [2,5,7,8];
>> allIdx = 1:size(imagesAll,1);
>> idx = setdiff(allIdx,tryIdx)
idx =
1 3 4 6 9
>> idx = ~ismember(allIdx,tryIdx)
idx =
1 0 1 1 0 1 0 0 1
And then simply:
imagesAll(idx,:)
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Entering Commands에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!