问题
In Matlab
, I have typed the following commands:
>> a = [1 2; 3 4]
a =
1 2
3 4
When I tried the command a^2
, I got the following:
>> a^2
ans =
7 10
15 22
I was actually expecting to get:
ans =
1 4
9 16
In other words, I was expecting to get each element of the matrix to be raised to 2.
Why was the result as shown above?
Thanks.
回答1:
In MATLAB, all single-character operators are matrix operators. So, you are using the matrix power, e.g.,
a^2 == a*a
if you want to square each element, you'll have to use the element-wise power operator:
>> a.^2
ans =
1 4
9 16
Read more about MATLAB's operators here.
回答2:
When you type a^2
in Matlab, what you are actually executing is a*a
(Matrix multiplication). If you want element-wise operations in Matalb, you need to type
a.^2
Note the difference between ^2
and .^2
!
The little dot .
before the operand marks an element-wise operation, as opposed to matrix operation.
The same goes for other operations, such as /
vs ./
, *
vs. .*
, etc.
来源:https://stackoverflow.com/questions/14497839/matlab-matrix-to-the-power-of-2