MATLAB: Matlab indexing and swapping

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.

Best Answer

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).
Related Question