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.

 採用された回答

James Tursa
James Tursa 2017 年 3 月 9 日
編集済み: James Tursa 2017 年 3 月 9 日

0 投票

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeShifting and Sorting Matrices についてさらに検索

タグ

タグが未入力です。

質問済み:

2017 年 3 月 9 日

編集済み:

2017 年 3 月 9 日

Community Treasure Hunt

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

Start Hunting!

Translated by