我如何使用ezplot
来绘制这样的内容:
syms Vg L a b z c
c=sym('a*Vg+z');
A=sym('a*Vg+b+c*L');
A=subs(A,[a b z],[1 2 3]);
ezplot(A)
我希望将Vg
与L
进行对比。
重点是A
包含另一个符号c
。
上述代码会产生错误。
答案 0 :(得分:2)
运行示例时的错误非常明显;
"绘制方程" 时,变量的数量不得超过2 。
在你的情况下,你试图隐含地绘制一个包含三个变量的函数;符号方程的输出是
...
A =
Vg + L*c + 2
现在,来自ezplot
的参考文档:
传递其他参数
如果您的函数有其他参数,例如
k
中的myfun
:function z = myfun(x,y,k) z = x.^k - y.^k - 1;
然后您可以使用匿名函数指定该参数:
ezplot(@(x,y)myfun(x,y,2))
因此,一种替代方法是可以为这个3变量表达式创建一个函数:
% myfun.m
function z = myfun(Vg,L,c)
z = Vg + L.*c + 2;
end
然后通过使用前两个参数(ezplot
)的匿名函数和第三个(@(Vg,L)
)的固定值调用此函数来使用c
。
示例用法,重复ezplot
:s,用于c
的不同(固定)值:
% plot 'Vg + L*c + 2 = 0' for values of c in [0,5]
hold on, box on
for c = 0:0.05:5
ezplot(@(Vg,L)myfun(Vg,L,c))
end
作为另一种选择,您只需使用subs(...)
即可。 Vg
符号用于为Vg
的不同(固定)值绘制其余两个的隐式函数:
syms Vg L a b z c
c=sym('a*Vg+z');
A=sym('a*Vg+b+c*L');
A=subs(A,[a b z],[1 2 3]);
hold on, box on
for VgVal = -6:6
ezplot(subs(A, Vg, VgVal))
end
title([char(A), ', with Vg \in [-6, 6]'])