Index exceeds matrix dimensions
4 14 15 1
9 7 6 12
5 11 10 8
16 2 3 13
Индексирование (Subscripts)
Произведение матриц
I
I
I
I
6 7 2
1 5 9
8 3 4
8 0 -4
2 0 -1
6 0 -3
Векторное произведение и транспонирование матриц
Вектор-строка и вектор-столбец могут быть перемножены в любом порядке (оператор умно-жения * расположен на верхнем регистре клавиши с цифрой 8). Результатом будет или ска-ляр (внутреннее произведение) или матрица (внешнее произведение). Для приведенных выше векторов vи uимеем :
x = v*u
x =
X = u*v
X =
Для действительных матриц, операция транспонирования меняет взаимное местоположение элементов aij aji, симметричных относительно главной диагонали. Для обозначения транс-понирования MATLAB использует одиночную кавычку (апостроф) (‘). Для нашей симметри-чной матрицы Паскаля A’ = A.Однако матрица Вне является симметричной и поэтому:
X = B'
X =
Транспонирование превращает вектор-строку в вектор-столбец и наоборот. Если xиy оба яв-ляются действительными векторами, то произведение x*yне определено, но оба произве-дения x'*yи y'*xдают один и тот же скаляр. Это соотношение используется так часто, что имеет три различных имени: скалярное произведение, внутреннее произведение и точечное произведение.
Для комплексного вектора или матрицы,z, величина z' обозначет комплексно-сопряженное транспонирование. В MATLAB-е предусмотрены также поэлементные операции над элеме-нтами массивов. Признаком поэлементных операций служит точка после обозначения пере-менной. Так, транспонирование элементов матрицы zкак массива чисел обозначается z.', по аналогии с другими операциями на массивами чисел. Например, если
z = [1+2i 3+4i]
то
z' =
тогда как z.' есть
z.' =
Для комплексных векторов, два скалярных произведения x'*yиy'*x комплексно сопряжены, а скалярное произведение x'*x комплексного вектора с самим собой есть действительное число.
Для произведения двух совместимых Аи В матриц в MATLAB–е достаточно записать в ко-мандной строке С = А*В. MATLAB самостоятельно проверит совместимость размерностей матриц и выдаст результат. Если матрицы несовместимы, выдается сообщение об ошибке:
Error using ==> *
Inner matrix dimensions must agree.
Для краткого рассмотрения некоторых основных понятий, связанных с индексированием дву-мерных массивов (матриц), введем «волшебную» матрицу 4-го порядка:
F = magic(4)
F =
Элемент в i-ой строке и j-ом столбце матрицы Fобозначается через F (i,j). Например, F (4,2)есть число в четвертой строке и втором столбце. Для нашего волшебного квадрата, F(4,2) есть 14. Таким образом, можно вычислить сумму элементов четвертого столбца матрицы F,напечатав
F (1,4) + F (2,4) + F (3,4) + F (4,4)
Это дает ответ
ans =
но, как мы увидим в дальнейшем, не является самым элегантным способом суммирования элементов одного столбца.
Имеется также возможность обращения к элементам матрицы при помощи одного индекса, F(k). Это обычный способ обращения к элементам векторов (строк или столбцов). Но в MATLAB-е такой способ индексирования можно применить и к двумерным (в общем случае – многомерным) матрицам, так как система MATLAB хранит все многомерные массивы чи-сел в виде одного длинного вектора-столбца, сформированного из столбцов исходной матри-цы. Так, для нашего волшебного квадрата, F (8)есть другой способ обращения к начени 14 хранящемуся в F (4,2).
Если вы попытаетесь использовать элемент, находящийся вне размеров матрицы, это приве-дет к сообщению об ошибке
t = F (4,5)
(Индекс превышает размерность матрицы)
С другой стороны, если вы попытаетесь запомнить какое-либо число вне размеров матрицы, размер будет соответствующим образом увеличен увеличен, чтобы принять новое значение.
X = A;
X(4,5) = 17
X =