Самая основная структура данных 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