I have this error msg (Matrix index is out of range for deletion. Error in tray1 (line 31) x1(:,rows) = []; ) what is the problem ????

1 view (last 30 days)
[rows, columns] = size(x1); for col = 1 : columns sum = 0; for row = 1 : rows % Now get the mean over all values in this column. columnMeans(col) = sum / rows; if columnMeans(col)> avgcut columnMeans(col)< avgcut x1(:,col) = []; end end end

Accepted Answer

alice
alice on 5 Jul 2017
You are deleting columns of your matrix x1 in the loop, so its size has changed (moreover, you skip some columns).
To avoid this, you can store the index of the column you want to delete in the loop and delete them only when the loop is finished:
colToDelete = [];
[rows, columns] = size(x1);
for col = 1 : columns
sum = 0;
for row = 1 : rows % Now get the mean over all values in this column.
columnMeans(col) = sum / rows;
if columnMeans(col)> avgcut || columnMeans(col)< avgcut
colToDelete = [colToDelete,col];
end
end
end
x1(:,colToDelete) = [];

More Answers (0)

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!