2013-08-29 7 views
0

У меня есть столбец чисел, и я хочу найти те, которые больше 10, а затем записывать их индексы. Я могу сделать это для одного индекса с:Как сохранить несколько индексов в новый массив

[y, I] = A(A>10) 

где у хранит значения, хранит I индекс, а А имя матрицы.

, но MATLAB не позволит мне делать это более чем для одного индекса. Когда я попробовал, он дал мне ошибку:

«индексация не может принести несколько результатов.»

Любая помощь будет высоко ценится, потому что я новичок в MATLAB и не понял, все трюки еще.

+2

использование 'I = найти (A> 10)' – Adiel

+1

связанный с вопросом: [Как выбрать подматрицу (не в каком-либо конкретном шаблоне) в Matlab] (http://stackoverflow.com/questions/13091193/1336150#13093242) (см. часть о логической индексации) –

ответ

1

Вы запрашиваете у Matlab несколько результатов, тогда как A (A> 10) возвращает только матрицу столбцов. Это будет один правильный способ сделать это:

I = A > 10; 
y = A(I); 

Или, если вы хотите их в одной строке, вы можете сделать это:

[y, I] = deal(A(A>10), A>10); 
+0

Спасибо, что сделали это , Мы еще не перешли на эту функцию. –

+0

Здесь нет смысла делать однострочный лайнер. Читаемость более важна! –

+0

У меня был еще один быстрый вопрос относительно этого: вместо элементов в A> 10, как бы форматировать это, чтобы индексировать три наибольших значения? –