2013-01-16 71 views
3

我正在嘗試使用fplot來繪製函數及其派生圖。在Matlab中使用fplot

fplot('3*x*sin(x) - 2*x', [-2*pi 2*pi], 'r') 

這是工作,但下面的命令顯示錯誤。

fplot('diff(3*x*sin(x) - 2*x)', [-2*pi 2*pi], 'g') 

錯誤顯示的

??? Subscripted assignment dimension mismatch. 

Error in ==> fplot at 105 
x = xmin+minstep; y(2,:) = feval(fun,x,args{4:end}); 

請給我一些建議嗎?

+0

顯示什麼錯誤? –

+0

@Pavan查看更新後的問題 – noufal

+0

嘗試在新圖中繪製第二個圖以查看其是否有效。 –

回答

1

你可以先計算衍生物,字符串變換結果,然後繪製獲得的功能:

syms x; 
di = char(diff(3*x*sin(x)-2*x)); 
fplot(di, [-2*pi 2*pi], 'g'); 

編輯: @shoelzer提供您收到的錯誤正確的解釋。

+1

'@ zplesivcak',感謝您的快速回復 – noufal

4

問題是在函數字符串中包含diff。您的功能需要爲N個輸入產生N個輸出,但有diff會給出N-1個輸出。從上fplot的文件(強調):

函數必須是這樣的形式Y = F(x)的,其中x是其範圍指定的限度的矢量,並且y是矢量相同的大小作爲x幷包含函數的x值中的值(請參閱第一個示例)。

zplesivcak's answer顯示瞭解決此限制的一種方法。您也可以非象徵性地評估該功能:

x = linspace(-2*pi, 2*pi, 1000); 
y = diff(3*x.*sin(x) - 2*x); 
figure 
plot(y) 
+0

'@shoelzer'謝謝,但我正在探索''fplot'功能。 – noufal