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

 채택된 답변

Image Analyst
Image Analyst 2017년 9월 8일

1 개 추천

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

Murat Yetkin
Murat Yetkin 2017년 9월 8일
this havent worked since the 'rowsToDelete' variable is not an integer. thank you.
Andrei Bobrov
Andrei Bobrov 2017년 9월 8일
편집: Andrei Bobrov 2017년 9월 8일
rowsToDelete = A < 0.1*max(A);
A(rowsToDelete) = [];
B(rowsToDelete) = [];
Thanks for the correction Andrei!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 루프와 조건문에 대해 자세히 알아보기

태그

질문:

2017년 9월 8일

댓글:

2017년 9월 8일

Community Treasure Hunt

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

Start Hunting!