Filter löschen
Filter löschen

How to delete elements from vector in for loop?

15 Ansichten (letzte 30 Tage)
Murat Yetkin
Murat Yetkin am 8 Sep. 2017
Kommentiert: Image Analyst am 8 Sep. 2017
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

Akzeptierte Antwort

Image Analyst
Image Analyst am 8 Sep. 2017
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 Kommentare
Andrei Bobrov
Andrei Bobrov am 8 Sep. 2017
Bearbeitet: Andrei Bobrov am 8 Sep. 2017
rowsToDelete = A < 0.1*max(A);
A(rowsToDelete) = [];
B(rowsToDelete) = [];
Image Analyst
Image Analyst am 8 Sep. 2017
Thanks for the correction Andrei!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 루프와 조건문 finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!