【发布时间】:2019-11-29 13:13:37
【问题描述】:
这是一个 fplot 不绘制任何内容的示例:
a=0.336;
Ta=9.476;
Te=1.208;
Tw=1.498;
eqh=[0.661;0.619;0.568];
ex=[-1.24;-1.346;-1.441];
en=-ex;
ey=[0.376;0.705;0.968];
eqx=[-0.309;-0.357;-0.392];
eh=[1.594;1.583;1.545];
eyqh=[0.642;0.78;0.897];
a0=a*Ta*Te^2;
syms bt Td Ki Kp;
a1=sym([]);a2=sym([]);a3=sym([]);a4=sym([]);exqh=sym([]);
for i=1:3
Kp=1/bt;
exqh(i)=en(i)*eqh(i)+eqx(i)*eh(i);
Ki=1/(bt*Td);
a1(i)=Ta*Tw*eqh(i)+a*Te^2*en(i)+a*Te^2*ey(i)*Kp;
a2(i)=a*Te^2*ey(i)*Ki+Ta+Tw*exqh(i)-eyqh(i)*Kp*Tw;
a3(i)=en(i)+ey(i)*Kp-eyqh(i)*Ki*Tw;
a4(i)=ey(i)*Ki;
assume(bt~=0)
f=@(bt) a1(i)
fplot(f,[0.01 1],'b')
hold on
end
这是另一个例子,fplot 工作:
syms y x;
y=@(x) 2/x+6;
z=y;
assume(x~=0)
fplot(z,[-1 1],'b')
我无法理解这两种情况之间的区别。在我看来,它们是相同的。
谁能解释一下为什么上面的例子不起作用,但下面的例子起作用?
【问题讨论】:
-
这个问题不清楚。
fplotdocumentation 有什么你不清楚的地方吗? -
@Dev-iLe 'fplot(f,[0.01 1],'b')' 是错误的,但 'fplot(z,[-1 1],'b')' 是正确的。
-
那是因为你的
f定义是可疑的。一方面,您将符号变量与 function_handle 无缘无故地混合在一起,另一方面,您将 function_handle 中的变量范围限定在完全不相交的地方。我确实需要指出,如果您遵循how to ask 指南并使用minimal examples,您可以确定问题的根源。后者不仅有利于提出 SO 问题。对自己的高效调试也有好处。
标签: matlab plot symbolic-math function-handle