2013-06-24 3 views
0

Я очень новичок в MATLAB и у меня есть простой вопрос, который нарушающий меня,sub2ind все х и у координаты матрицы

Я хочу знать, если его можно тайному все индексы матрицы к линейных индексов.

при использовании SUB2IND я должен сообщить координаты x и y, но я хочу преобразовать все в одно и то же время.

Я могу использовать функцию FIND, которая возвращает два вектора x и y, и таким образом я могу использовать SUB2IND успешно, но FIND возвращает только координаты x и y ненулевых элементов.

есть ли способ сделать это?

ответ

1

Если вы хотите, чтобы все элементы массива A как линейные индексы, это может быть сделано просто с помощью:

IND = 1:numel(A); 

Это работает для любого размера или размерности массива.

Подробнее о array indexing in Matlab, включая разницу между линейной индексацией и логической индексацией. Когда вы используете find, вы, по сути, используете логическое индексирование для получения линейной индексации. Функция find может быть использована для надежного получения всех ваших линейных индексов, через IND = find(A==A);, но это ужасно неэффективно.

+0

спасибо, это тоже помогло! – mad

1

Вам не нужно конвертировать, просто используйте один номер \ 1-D вектор при доступе к элементам вашей матрицы. Например, учитывая 5x5 матрицу M

M=magic(5); 

вы можете получить доступ к последнему элементу с помощью M(5,5) или с помощью M(25) ...

аналогично M(21:25) даст вам информацию о M(1,5), M(2,5) ... M(5,5).

+0

Это тоже помогает, спасибо. – mad

+0

@horchler, где говорится «логические индексы»? –

+0

@EitanT: Вопрос относится к линейным индексам - вот в чем смысл. И с тех пор natan полностью переписал свой ответ, который изначально использовал 'ones' для получения набора логических индексов. – horchler