matlab indexing and swapping

11 views (last 30 days)
zhi zhu
zhi zhu on 9 Mar 2017
Edited: James Tursa on 9 Mar 2017
x = [6 5 3 5 9 10 438 4 1 4 7 0 4 8 4 2];
len = length(x);
minval = x(1);
for n = 1:len
for i = 1:len
if x(i) < minval
minval = x(i);
end
end
sortval(i) = minval;
x(n find(x==minval)) = x(find(x==minval) n);
x(n) = [];
end
disp(sortval)
I am trying to swap the position of n and my minval so I can delete that minval later and not affect the process of sorting later in the for loop.

Accepted Answer

James Tursa
James Tursa on 9 Mar 2017
Edited: James Tursa on 9 Mar 2017
This isn't going to work like you hoped. If you delete an element from the array with this line:
x(n) = [];
Then there are no longer len elements in the x array, so this will eventually yield an error because i will be out of bounds for the shortened length of x (i.e., len is no longer the actual length of x):
for i = 1:len
if x(i) < minval
So first thing you need to do is rewrite your code to fix this problem, then we can worry about how to swap elements (if that step still remains in your fixed code).

More Answers (0)

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!