Более короткий код в matlab для минимизации данных и получения соответствующих индексов - PullRequest
0 голосов
/ 19 декабря 2011

РЕДАКТИРОВАТЬ Как упростить следующий код:

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

Спасибо!

РЕДАКТИРОВАТЬ

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

1 Ответ

1 голос
/ 19 декабря 2011

Вы уверены, что ваш код делает то, что хотел?

Может быть, вы хотите попробовать

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

РЕДАКТИРОВАТЬ: ОК, вы идете,

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

у вас есть то, что вам нужно в r, но если они вам нужны как s и e, тогда:

s = r(1);
e = r(2);
...