不完整的ezplot绘图

时间:2010-03-30 02:31:02

标签: matlab

为什么当我在例如[1 1.5]区间使用ezplot时,在一些线条中会出现不连续性,但是当我使用像[1.3 1.5]这样的更近的区间时,不连续性将被消灭?

2 个答案:

答案 0 :(得分:1)

EZPLOT是一个通用的绘图功能,它将自动选择一组点来评估和绘制传递给它的函数。大多数时候,事情都很好。但是在某些特殊情况下EZPLOT可能会遇到麻烦。它可能无法在函数快速变化的不连续点或点附近很好地呈现(它可能会误认为不连续)。

这是一个功能的缺点,它被设计成足以接受你给它的任何函数:很难使它足够通用来处理一切完全正确,所以一些特殊的边缘案例看起来有点滑稽。在这种情况下,你应该避免像EZPLOT这样的函数(它为你做出很多选择),并通过在选择的点评估你的函数并使用{来绘制这些点来自己绘图。 {3}}功能。这是PLOT

答案 1 :(得分:1)

问题是ezplot()很有用,但不是很有用。

绘制没有离散点的函数的更好选项是fplot()。查看documentation for it

以下是与ezplot()相比如何使用它的示例:

lowerBound = 0;
upperBound = 1;

%# The ezplot way:
ezplot('y=sin(1/x)',[lowerBound,upperBound,-1,1])

%# The fplot way:
fplot('sin(1/x)',[lowerBound,upperBound])

fplot()将评估功能变化更快的更多点。因此,如果仔细观察,不连续性仍会在图表中引起问题,但是会更加努力地准确地绘制它们。

要绘制具有三个变量的函数的水平曲线,需要更多输入:

%# First create a grid where you want the function to be drawn
[x,y]=meshgrid(-2:.01:2);
     %# Remember that -2:.01:2 creates a vector with values from -2 to 2
     %# in steps of .01

%# Then define your function
z=-3*y./(x.^2+y.^2+1);

%# Now graph the level curve of the function.  I chose the level z=0.5:
contour(x,y,z,[0.5])