我正在尝试使用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 :(得分: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为您收到的错误提供了正确的解释。