如何使用" ezplot"绘制隐式函数?

时间:2016-02-21 06:28:41

标签: matlab

我如何使用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)

我希望将VgL进行对比。

重点是A包含另一个符号c

上述代码会产生错误。

1 个答案:

答案 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

enter image description here

作为另一种选择,您只需使用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]'])

enter image description here