Подтвердить что ты не робот

MATLAB - извлечение строк матрицы

a = [1 2; 3 4; 5 6] Я хочу извлечь первую и третью строку a, поэтому у меня есть x = [1; 3] (индексы строк).

a(x) не работает.

4b9b3361

Ответ 1

Пример: a([1,3],:)

Запятая разделяет размеры, : означает "весь диапазон", а квадратные скобки составляют список.

Ответ 2

В MATLAB, если один параметр задан при индексировании, это так называемая линейная индексация. Например, если у вас есть матрица 4x3, линейные индексы элементов выглядят так: они растут по столбцам:

1   5   9
2   6  10
3   7  11
4   8  12

Поскольку вы передали вектор [1 3] в качестве параметра, выбирались только 1-й и 3-й элементы.

При выборе целых столбцов или строк используется следующий формат:

A(:, [list of columns])  % for whole columns
A([list of rows], :)     % for whole rows

Общая форма индексирования матрицы 2d:

A([list of rows], [list of columns])

Результатом являются элементы в пересечении индексированных строк и столбцов. Результатами будут элементы, отмеченные символом X:

A([2 4], [3 4 5 7])

. . C C C . C
R R X X X R X
. . C C C . C
R R X X X R X    

Ссылка и некоторые аналогичные примеры: учебник по индексированию матриц MATLAB.

Ответ 3

x = a([1 3]) ведет себя следующим образом:

temp = a(:)     % convert matrix 'a' into a column wise vector
x = temp([1 3]) % get the 1st and 3rd elements of 'a'

Ответ 4

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

for i = [1,3]
    a(i,:)
end

Ответ 5

введите это: a([1 3],[1 2]) выход

ans =
     1     2
     5     6