在Matlab中使用fplot

时间:2013-01-16 18:32:51

标签: matlab graph

我正在尝试使用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});

请给我一些建议?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

您可以先计算衍生,转换字符串中的结果,然后绘制获得的函数:

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

修改:@shoelzer为您收到的错误提供了正确的解释。