ВMATLAB предусмотрены команды для создания векторов и матриц специального вида. Рассмотрим некоторые из них:
zeros(M,N) – создает матрицу размером M×N c нулевыми элементами:
>> zeros(3,4)
ans =
0 0 0 0
0 0 0 0
0 0 0 0
ones(M,N) – создает матрицу размером M×N c единичными элементами:
>> ones(3,4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
eye(M,N) – создает матрицу размером M×N c единицами по главной диагонали и остальными нулевыми элементами:
>> eye(3,4)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
rand(M,N) – создает матрицу размером M×N из случайных чисел, равномерно распределенных в диапазоне от 0 до 1:
>> rand(3,4)
ans =
0.9501 0.4860 0.4565 0.4447
0.2311 0.8913 0.0185 0.6154
0.6068 0.7621 0.8214 0.7919
randn(M,N) – создает матрицу размером M×N из случайных чисел, распределенных по нормальному закону с нулевым математическим ожиданием и стандартным (среднеквадратическим) отклонением, равным единице 1:
>> randn(3,4)
ans =
1.1908 -0.1567 -1.0565 0.5287
-1.2025 -1.6041 1.4151 0.2193
-0.0198 0.2573 -0.8051 -0.9219
Для всех перечисленных команд можно задавать один аргумент M в случае квадратной матрицы (M=N):
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
rot90 – осуществляет разворот матрицы на 90o против часовой стрелки:
>> Q=[1 2;3 4]
Q =
1 2
3 4
>> R=rot90(Q)
R =
2 4
1 3
D=diag(V) – диагональная матрица, элементы которой задаются во входном аргументе - векторе V;
D=diag(V,k) – диагональная матрица со смещенной на k позиций диагональю (положительные k – смещение вверх, отрицательные – вниз), результатом является квадратная матрица размера length(V)+abs(k);
d=diag(A) – выделение главной диагонали из матрицы A в вектор d;
d=diag(A,k) – выделение k-ой диагонали из матрицы A в вектор d.
Пример:
Создать трехдиагональную матрицу
A =
размера 5×5 с помощью рассмотренных выше команд.
Решение:
Введем вектор V с целыми числами от одногодо пяти и используем его для создания диагональной матрицы и матрицы со смещенной на 2 вверх диагональю. Вектор длины четыре, содержащий двойки, заполняется, например, так: 2*ones(1,4). Этот вектор укажем в первом аргументе команды diag, а минус единицу – во втором и получим третью вспомогательную матрицу. Теперь достаточно вычесть из первой матрицы вторую и сложить с третьей:
>> V=1:5;
>> A=diag(V)-diag(V(1:3),2)+diag(2*ones(1,4),-1)
A =
1 0 -1 0 0
2 2 0 -2 0
0 2 3 0 -3
0 0 2 4 0
0 0 0 2 5
Более полная информация о специальных матрицах содержится в разделе elmat справочной системы MATLAB.