MATLAB: скопировать определенную часть массива - PullRequest
4 голосов
/ 10 февраля 2012

Я пытаюсь скопировать несколько элементов из матрицы, но не целую строку и ни один элемент.

Например, в следующей матрице:

a = 1 2
    3 4
    5 6
    7 8
    9 0

Как бы я скопировал только следующие данные?

b = 1
    3
    5

т.е. только строки 1: 3 в столбце 1 ... Я знаю, что вы можете удалить весь столбец следующим образом:

b = a(:,1)

... и я ценю, что может просто сделать это, а затем вывести последние две строки, но я хотел бы использовать более упорядоченный код, поскольку я запускаю очень ресурсоемкое решение. 1014 *

Ответы [ 2 ]

5 голосов
/ 10 февраля 2012

Элементы в матрице в MATLAB хранятся в основном порядке столбцов.Это означает, что вы могли бы даже использовать один индекс и сказать:

b = a(1:3);

Поскольку первые 3 элемента составляют 1,3,5.Аналогично, a (6) равно 2, a (7) равно 4 и т. Д. Посмотрите на метод sub2ind, чтобы понять больше:

http://www.mathworks.com/help/techdoc/ref/sub2ind.html

1 голос
/ 10 февраля 2012

Вы не «удаляете» второй столбец, вы ссылаетесь на другой столбец.

Вы должны прочитать некоторые документы Matlab, они предоставляют некоторую справку о синтаксисе для доступа к частям матриц:

http://www.mathworks.com/help/techdoc/learn_matlab/f2-12841.html#f2-428

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...