exponenta event banner

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

Наиболее базовой структурой данных 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

Связанные темы