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!