2015-02-11 39 views
0

我想,如下图: -为什么二次曲线给matlab错误?

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. 

我在哪里去了?

+3

不要作为错误信息告诉你;即使用'plot(x,2 * x-x。^ 2)'。注意'^'之前的点来计算元素明智 – 2015-02-11 15:25:01

+0

谢谢指出。我的错!为什么第二种方法不起作用?我认为这与上述原因相同。 – userxigement 2015-02-11 15:26:13

+0

因为您试图将1 x 11向量与1 x 11向量相乘,这是不允许的。你可以用一个11×1向量乘以1×11(例如'x'的转置),这将产生一个标量(3.85)。 – 2015-02-11 15:28:35

回答

1

你想要么

x=0:0.1:1; 
plot(x,2*x-x.^2); 

x=0:0.1:1; 
plot(x,2*x-x.*x); 

MATLAB自动使用*运营商矩阵multipilcation当两个操作数是数组,并使用^矩阵乘法时左操作数是一个数组。这适用于一维和二维数组。

x*xx^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