2015-02-11 36 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