我试图如下图: -
x=0:0.1:1;
plot(x,2*x-x^2);
为什么会出现以下错误: -
Error using ^
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^) instead.
目标是仅绘制二次函数。所以我修改了以上内容: -
x=0:0.1:1;
plot(x,2*x-x*x);
错误仍然存在: -
Error using *
Inner matrix dimensions must agree.
我哪里错了?
答案 0 :(得分:1)
你想要
x=0:0.1:1;
plot(x,2*x-x.^2);
或
x=0:0.1:1;
plot(x,2*x-x.*x);
当两个操作数都是数组时,MATLAB自动使用*
运算符进行矩阵乘法,当左操作数是数组时,MATLAB使用^
进行矩阵乘法。这适用于一维和二维阵列。
x*x
和x^2
正在尝试将1x11数组矩阵乘以1x11数组,这没有任何意义,因此Inner matrix dimensions must agree.
错误。
要对数组执行逐元素操作,必须在运算符前加.
作为前缀。例如,x.*x
执行逐元素乘法,x.^2
执行逐元素取幂。
见下文:
>> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
>> A*A % or A^2 do matrix multiplication
ans =
91 67 67
67 91 67
67 67 91
>> A.*A % or A.^2 do element-wise multiplication, (the square of each element)
64 1 36
9 25 49
16 81 4