Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 未完成的绘图_Matlab - Fatal编程技术网

Matlab 未完成的绘图

Matlab 未完成的绘图,matlab,Matlab,为什么在例如[1.5]间隔中使用ezplot时,某些线段会出现不连续,但在使用更接近的间隔(如[1.3 1.5])时,不连续性将被消除?是一种通用绘图功能,它将自动选择一组点,在这些点上计算并绘制传递给它的函数。大多数时候,事情都很顺利。但在一些特殊情况下,可能会遇到一些麻烦。它可能无法在不连续或函数快速变化的点附近很好地渲染(可能会误认为是不连续) 这是一个函数的缺点,它被设计为足够通用,可以接受你给它的任何函数:很难使它足够通用,以完全正确地处理所有事情,所以一些特殊的边缘情况看起来有点滑稽

为什么在例如[1.5]间隔中使用ezplot时,某些线段会出现不连续,但在使用更接近的间隔(如[1.3 1.5])时,不连续性将被消除?

是一种通用绘图功能,它将自动选择一组点,在这些点上计算并绘制传递给它的函数。大多数时候,事情都很顺利。但在一些特殊情况下,可能会遇到一些麻烦。它可能无法在不连续或函数快速变化的点附近很好地渲染(可能会误认为是不连续)


这是一个函数的缺点,它被设计为足够通用,可以接受你给它的任何函数:很难使它足够通用,以完全正确地处理所有事情,所以一些特殊的边缘情况看起来有点滑稽。在这种情况下,您应该避免使用(为您做出很多选择)等函数,而是通过在您选择的点上计算函数并使用函数绘制这些点来自己绘制东西。问题是
ezplot()
很有用,但没有那么健壮

绘制没有离散点的函数的更好选项是
fplot()
。看看这本书

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

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])

但是我函数的两个变量是不可分离的。如何对以下表达式使用fplot:sqrt(x^-y^2)+cos(x*y)=0这与绘制函数不同。你的函数实际上有三个变量:x,y和z。不是绘制三维图形,而是将z常量保持为0。因此,您正在绘制f(x,y)=z在f(x,y)=0处的水平曲线。等高线图绝对是注释中示例的方法。然而,我认为对contour的调用应该是
contour(x,y,z,[0.50.5])
等高线(x,y,z,[5])
等高线(x,y,z,[5.5]
为我提供了相同的图形。第二个参数可能会画两次相同的线?@James:文档中说,第四个参数的标量值将被解释为要生成的多个轮廓级别,而要生成单个轮廓级别,参数应该是一个向量,该值重复。可能是因为参数nt不是整数值,轮廓可以将其解释为轮廓级别值,而不是将其舍入到多个轮廓级别。
%# 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])