Создание, конкатенация и расширение матрицы

Самая основная структура данных MATLAB® является матрицей. Матрица является двумерным, прямоугольным массивом элементов данных, расположенных в строках и столбцах. Элементы могут быть числами, логические значения (true или false), даты и времена, строки или некоторый другой тип данных MATLAB.

Даже один номер хранится как матрица. Например, переменная, содержащая значение 100, хранится как матрица 1 на 1 типа double.

A = 100;
whos A
  Name      Size            Bytes  Class     Attributes

  A         1x1                 8  double              

Построение матрицы данных

Если у вас есть определенный набор данных, можно расположить элементы в матрице с помощью квадратных скобок. Одна строка данных имеет пробелы или запятые, промежуточные элементы, и точка с запятой разделяет строки. Например, создайте одну строку четырех числовых элементов. Размер получившейся матрицы 1 на 4, поскольку это ссорится и четыре столбца. Матрица этой формы часто упоминается как вектор - строка.

A = [12 62 93 -8]
A = 1×4

    12    62    93    -8

sz = size(A)
sz = 1×2

     1     4

Теперь создайте матрицу с теми же числами, но расположите их в двух строках. Эта матрица имеет две строки и два столбца.

A = [12 62; 93 -8]
A = 2×2

    12    62
    93    -8

sz = size(A)
sz = 1×2

     2     2

Специализированные матричные функции

MATLAB имеет много функций, что справка создает матрицы с определенными значениями или конкретной структурой. Например, zeros и функции ones создают матрицы всех нулей или всех единиц. Первые и вторые аргументы этих функций являются количеством строк и количеством столбцов матрицы, соответственно.

A = zeros(3,2)
A = 3×2

     0     0
     0     0
     0     0

B = ones(2,4)
B = 2×4

     1     1     1     1
     1     1     1     1

Функция diag помещает входные элементы в диагональ матрицы. Например, создайте вектор - строку A, содержащий четыре элемента. Затем создайте матрицу 4 на 4, диагональные элементы которой являются элементами A.

A = [12 62 93 -8];
B = diag(A)
B = 4×4

    12     0     0     0
     0    62     0     0
     0     0    93     0
     0     0     0    -8

Конкатенация матриц

Можно также использовать квадратные скобки, чтобы соединить существующие матрицы вместе. Этот способ создать матрицу называется конкатенацией. Например, конкатенируйте два вектора - строки, чтобы сделать еще более длинный вектор - строку.

A = ones(1,4);
B = zeros(1,4);
C = [A B]
C = 1×8

     1     1     1     1     0     0     0     0

Чтобы расположить A и B как две строки матрицы, используйте точку с запятой.

D = [A;B]
D = 2×4

     1     1     1     1
     0     0     0     0

Чтобы конкатенировать две матрицы, у них должны быть совместимые размеры. Другими словами, когда вы конкатенируете матрицы горизонтально, у них должно быть одинаковое число строк. Когда вы конкатенируете их вертикально, у них должно быть одинаковое число столбцов. Например, горизонтально конкатенируйте две матрицы, что у обоих есть две строки.

A = ones(2,3)
A = 2×3

     1     1     1
     1     1     1

B = zeros(2,2)
B = 2×2

     0     0
     0     0

C = [A B]
C = 2×5

     1     1     1     0     0
     1     1     1     0     0

Альтернативный способ конкатенировать матрицы состоит в том, чтобы использовать функции конкатенации, такие как horzcat, который горизонтально конкатенирует две совместимых входных матрицы.

D = horzcat(A,B)
D = 2×5

     1     1     1     0     0
     1     1     1     0     0

Генерация числовой последовательности

colon является удобным способом создать матрицы, элементы которых последовательны и равномерно расположены с интервалами. Например, создайте вектор - строку, элементы которого являются целыми числами от 1 до 10.

A = 1:10
A = 1×10

     1     2     3     4     5     6     7     8     9    10

Можно использовать оператор двоеточия, чтобы создать последовательность чисел в любой области значений, постепенно увеличенной одной.

A = -2.5:2.5
A = 1×6

   -2.5000   -1.5000   -0.5000    0.5000    1.5000    2.5000

Чтобы изменить значение шага последовательности, задайте инкрементное значение, промежуточное запуск и окончание значений области значений, разделенных двоеточиями.

A = 0:2:10
A = 1×6

     0     2     4     6     8    10

Чтобы постепенно уменьшиться, используйте отрицательное число.

A = 6:-1:0
A = 1×7

     6     5     4     3     2     1     0

Можно также постепенно увеличиться значениями нецелого числа. Если инкрементное значение равномерно не делит заданную область значений, MATLAB автоматически заканчивает последовательность в последнем значении, которого это может достигнуть прежде, чем превысить область значений.

A = 1:0.2:2.1
A = 1×6

    1.0000    1.2000    1.4000    1.6000    1.8000    2.0000

Расширение матрицы

Можно добавить один или несколько элементов в матрицу путем размещения их за пределами существующих индексных контуров строки и столбца. MATLAB автоматически заполняет матрицу нулями, чтобы сохранить его прямоугольным. Например, создайте 2 3 матрица и добавьте дополнительную строку и столбец в нее путем вставки элемента в (3,4) положение.

A = [10  20  30; 60  70  80]
A = 2×3

    10    20    30
    60    70    80

A(3,4) = 1 
A = 3×4

    10    20    30     0
    60    70    80     0
     0     0     0     1

Можно также расширить размер путем вставки новой матрицы за пределами существующих индексных областей значений.

A(4:5,5:6) = [2 3; 4 5]
A = 5×6

    10    20    30     0     0     0
    60    70    80     0     0     0
     0     0     0     1     0     0
     0     0     0     0     2     3
     0     0     0     0     4     5

Чтобы расширять размер матрицы неоднократно, такой как в цикле for, обычно лучше предварительно выделить пробел для самой большой матрицы, которую вы ожидаете создавать. Без предварительного выделения MATLAB должен выделить память каждый раз увеличения размера, замедлив операции. Например, предварительно выделите матрицу, которая содержит до 10 000 строк и 10 000 столбцов путем инициализации ее элементов, чтобы обнулить.

A = zeros(10000,10000);

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

Пустые массивы

Пустой массив в MATLAB является массивом по крайней мере с одной равной нулю длиной размерности. Пустые массивы полезны для представления концепции "ничего" программно. Например, предположите, что вы хотите найти все элементы вектора, которые являются меньше чем 0, но нет ни одного. Функция find возвращает пустой вектор индексов, указывая, что она не могла найти элементы меньше чем 0.

A = [1 2 3 4];
ind = find(A<0)
ind =

  1x0 empty double row vector

Много алгоритмов содержат вызовы функции, которые могут возвратить пустые массивы. Часто полезно позволить пустым массивам течь через эти алгоритмы как аргументы функции вместо того, чтобы обработать их как особый случай. Если действительно необходимо настроить обработку пустого массива, можно проверять на них использующий функцию isempty.

TF = isempty(ind)
TF = logical
   1

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте