MATLAB
ones(2,2)*2.*ones(2,2) ans = 2 2 2 2 ones(2,2).*2*ones(2,2) ans = 4 4 4 4
rayryeng - R.. 7
.*
并且*
是相同的优先级,因此您从左到右阅读表达式.
第一个创建2 x 2
所有1 的矩阵,将元素按比例缩放2然后逐个元素地.*
将矩阵乘以所有相同大小的另一个矩阵,从而得到所有2的结果.请注意,执行2 * ones(2, 2)
并2 .* ones(2, 2)
给出与创建2 x 2
所有2 的大小矩阵完全相同的结果.这是MATLAB的一些很好的语法糖.还要注意的是扭转操作数的顺序给出相同的结果,所以ones(2, 2) * 2
并ones(2, 2) .* 2
给出了相同的结果.
第二个创建2 x 2
所有1 的矩阵,将元素按比例缩放2然后矩阵乘以(即*
)矩阵与所有1的另一个矩阵,从而得到所有4的结果.
元素乘法和矩阵乘法是两个完全不同的东西.前者确保两个矩阵的大小相同,除了其中一个操作数是标量,并创建一个与操作数大小相同的矩阵,输出中的每个元素乘以两个矩阵之间的相应位置.具体地说,假设这C(i, j)
是C
位置的输出矩阵(i, j)
,C(i, j) = A(i, j) * B(i, j)
.矩阵乘法是使用线性代数定律的两个矩阵的乘法.我不会侮辱你的智慧,并解释那些是你的个人资料所暗示的那样.
这并不神秘.如果你想说服自己,请从左到右输入表达式的每个部分,将以前的结果链接在一起,你会发现它是正确的:
>> A = ones(2, 2) A = 1.00 1.00 1.00 1.00 >> A = A * 2 A = 2.00 2.00 2.00 2.00 >> A = A .* ones(2, 2) A = 2.00 2.00 2.00 2.00 >> B = ones(2, 2) B = 1.00 1.00 1.00 1.00 >> B = B .* 2 B = 2.00 2.00 2.00 2.00 >> B = B * ones(2, 2) B = 4.00 4.00 4.00 4.00
我还鼓励阅读有关两者之间差异的文档:https://www.mathworks.com/help/matlab/ref/times.html,https://www.mathworks.com/help/matlab/ref/mtimes .html.
.*
并且*
是相同的优先级,因此您从左到右阅读表达式.
第一个创建2 x 2
所有1 的矩阵,将元素按比例缩放2然后逐个元素地.*
将矩阵乘以所有相同大小的另一个矩阵,从而得到所有2的结果.请注意,执行2 * ones(2, 2)
并2 .* ones(2, 2)
给出与创建2 x 2
所有2 的大小矩阵完全相同的结果.这是MATLAB的一些很好的语法糖.还要注意的是扭转操作数的顺序给出相同的结果,所以ones(2, 2) * 2
并ones(2, 2) .* 2
给出了相同的结果.
第二个创建2 x 2
所有1 的矩阵,将元素按比例缩放2然后矩阵乘以(即*
)矩阵与所有1的另一个矩阵,从而得到所有4的结果.
元素乘法和矩阵乘法是两个完全不同的东西.前者确保两个矩阵的大小相同,除了其中一个操作数是标量,并创建一个与操作数大小相同的矩阵,输出中的每个元素乘以两个矩阵之间的相应位置.具体地说,假设这C(i, j)
是C
位置的输出矩阵(i, j)
,C(i, j) = A(i, j) * B(i, j)
.矩阵乘法是使用线性代数定律的两个矩阵的乘法.我不会侮辱你的智慧,并解释那些是你的个人资料所暗示的那样.
这并不神秘.如果你想说服自己,请从左到右输入表达式的每个部分,将以前的结果链接在一起,你会发现它是正确的:
>> A = ones(2, 2) A = 1.00 1.00 1.00 1.00 >> A = A * 2 A = 2.00 2.00 2.00 2.00 >> A = A .* ones(2, 2) A = 2.00 2.00 2.00 2.00 >> B = ones(2, 2) B = 1.00 1.00 1.00 1.00 >> B = B .* 2 B = 2.00 2.00 2.00 2.00 >> B = B * ones(2, 2) B = 4.00 4.00 4.00 4.00
我还鼓励阅读有关两者之间差异的文档:https://www.mathworks.com/help/matlab/ref/times.html,https://www.mathworks.com/help/matlab/ref/mtimes .html.