2011-12-19 3 views
0

EDIT次のコードを簡素化する方法データを最小限にするために、MATLABでの短いコードとなって対応するインデックス

if(x(a) > x(b)) 
    s = b; 
    e = a; 
else 
    s = a; 
    e = b; 
end 

を私はそれが短いように取得することができます

s = a; 
e = b; 
if(x(a) > x(b)) 
    s = b; 
    e = a; 
end 

感謝を!

EDIT

h = [a b]; 
[~, idx] = min([x(a) x(b)]); 
s = h(idx) 
e = h(3-idx) 
+0

なぜ比較の前に 's'と' e'を設定しますか?最初の2行を削除すると、それはほぼ同じくらい簡単です。 – mtrw

+0

これは既に短縮されているためです:)私の編集を見てください:) – tim

+0

これを 'a'と' b'のループの内側でやっていますか?もしそうなら、より良い方法があるかもしれません... – Edric

答えて

1

あなたのコードは、あなたがそれをやりたいんあなたは確かにいますか?

たぶん、あなたは

s = min([x(a),x(b)]); 
e = max([x(a),x(b)]); 

EDIT試してみたい:あなたはあなたがrに必要なものを持っていますが、seとしてそれらを必要とする場合は、[OK]そこに行く、

r = [find(x==max(x), find(x==minx)]; 

を:

s = r(1); 
e = r(2); 
+0

私は実際の値 'x(a)'と 'x(b)'が最小化されることを望んでいません。私は、 'x'の小さい方の値のインデックスを' s'に、大きい方の値を 'e'に設定したいと考えています。オリジナルの投稿の編集を見てください! – tim

関連する問題