Matlab - матрица в степени 2

В Matlab я ввел следующие команды:

>> a = [1 2; 3 4]

a =

     1     2
     3     4

Когда я попробовал команду a^2, я получил следующее:

>> a^2

ans =

     7    10
    15    22

На самом деле я ожидал получить:

ans =

       1     4
       9     16

Другими словами, я ожидал, что каждый элемент матрицы будет увеличен до 2.

Почему результат был таким, как показано выше?

Спасибо.


person Simplicity    schedule 24.01.2013    source источник


Ответы (2)


В MATLAB все односимвольные операторы являются матричными операторами. Итак, вы используете силу matrix, например,

a^2 == a*a

если вы хотите возвести в квадрат каждый элемент, вам придется использовать оператор мощности по элементам:

>> a.^2
ans = 
    1   4
    9   16

Узнайте больше об операторах MATLAB здесь.

person Rody Oldenhuis    schedule 24.01.2013

Когда вы вводите a^2 в Matlab, на самом деле вы выполняете a*a (умножение Matrix). Если вам нужны поэлементные операции в Matalb, вам нужно ввести

a.^2

Обратите внимание на разницу между ^2 и .^2 !
Маленькая точка . перед операндом отмечает поэлементную операцию, а не матричную операцию.

То же самое касается и других операций, таких как / против ./, * против .* и т. д.

person Shai    schedule 24.01.2013