Help with updating for loop
1 次查看(过去 30 天)
显示 更早的评论
Hi all,I have a problem with the following sample code:
M=[1 2 3 4 5 6 7 8 9 10] for i=1:length(M) M(i)=[] end
My code is not complete, but my problem is that when one row is omitted from the matrix, the size reduces to 9, so the code gets stock with an error to find M(10). Actually, I want to update the cell size in for loop. In my code, I must make some rows empty, I can not keep them. Thanks
0 个评论
采纳的回答
Voss
2024-4-23
You can iterate backwards, so that subsequent indexing is never off the end of M.
Example:
M=[1 2 3 4 5 6 7 8 9 10];
for i=length(M):-1:1
M(i)=[];
end
M
Or you can store the indices to delete, and delete them all after the loop.
Example, using numeric indices:
M=[1 2 3 4 5 6 7 8 9 10];
to_delete = [];
for i=1:length(M)
to_delete(end+1) = i;
end
M(to_delete)=[];
M
Example, using logical indices:
M=[1 2 3 4 5 6 7 8 9 10];
to_delete = false(1,numel(M));
for i=1:length(M)
to_delete(i) = true;
end
M(to_delete)=[];
M
4 个评论
Voss
2024-4-24
Neda,
Yes, please post a new question, upload your code file(s) there using the paperclip button, and specify what problems you are having.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!