How to delete elements from vector in for loop?

I have an A vector and I want to remove values less than the 0.1*max(A). Also I want to remove same rows in a B vector with respect to A:
size(B)= 801 1 size(A)=801 1
The error that I got is:
'A null assignment can have only one non-colon index.'
for p=length(A):-1:1
if A(p,1)<max(A)*0.1
A(p,1)=[]; B(p,1)=[];
end
end

 采纳的回答

Try this:
rowsToDelete = 0.1*max(A);
A(rowsToDelete) = [];
B(rowsToDelete) = [];
No loop needed.
The problem was that it was considering the array as a 2-D array because you included the ",1" in the indexing. And you can't delete just one element from a 2-D array because you can't have arrays with ragged edges. You have to delete a whole column or a whole row, not part of a row or column.

3 个评论

this havent worked since the 'rowsToDelete' variable is not an integer. thank you.
rowsToDelete = A < 0.1*max(A);
A(rowsToDelete) = [];
B(rowsToDelete) = [];
Thanks for the correction Andrei!

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 루프와 조건문 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!