2013-12-10 2 views
0

Давайте возьмем два вектора:Octave/Matlab: мин из двух векторов

a = [1 ; 2; 3] 
b = [0 ; 9 ; -5] 

Если я хочу минимальное значение вектора, и это положение, я могу просто:

[x, ix] = min(a) 

можно также сравнить два векторы и получить минимальные значения:

> min(a, b) 
ans = 

    0 
    2 
    -5 

Но это невозможно, чтобы получить позиции минутных значений двух векторов:

> [x, ix] = min(a, b) 
x = 

    0 
    2 
    -5 

error: element number 2 undefined in return list 

Почему? Как их получить? Есть простой метод?

ответ

2

Вот как это сделать:

[v id]=min([a,b]') 
+0

Примечание что также переносит минимумы/индексы, поэтому 'v' и' id' являются векторами строк, а 'a' и' b' - векторами столбцов. Часто это не имеет значения, но часто это происходит. –

0

Вы должны думать о том, что подразумевается для выхода ix.

Это показывает, в котором вектор минимум составляет:

ix=a<b; 
x=a.*ix+b.*not(ix); 
2

Это вопрос наличия правильного понимания:

[x,ix] = min([a b],[],2) 
Смежные вопросы