MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   如何轮廓绘制自定义函数? (https://www.labfans.com/bbs/showthread.php?t=23937)

poster 2019-12-10 20:48

如何轮廓绘制自定义函数?
 
我有一个自定义函数,根据两个给定的输入返回0或1 :

function val = myFunction(val1, val2) % logic to determine if val=1 or val=0 end 如何在下面的网格生成的x,y坐标上创建函数的轮廓图?

meshgrid(0:.5:3, 0:.5:3); 该图将仅显示等高线图上函数为0或1的位置。



[B]回答:[/B]

如果您的函数myFunction不是用于处理矩阵输入的,则可以使用函数[URL="http://www.mathworks.com/help/techdoc/ref/arrayfun.html"]ARRAYFUN[/URL]将其应用于x和y所有相应条目:

[x,y] = meshgrid(0:0.5:3); %# Create a mesh of x and y points z = arrayfun(@myFunction,x,y); %# Compute z (same size as x and y) 然后,您可以使用功能[URL="http://www.mathworks.com/help/techdoc/ref/contour.html"]CONTOUR[/URL]为上述数据生成轮廓图。由于您的z数据只有两个不同的值,因此只绘制一个轮廓线水平(值为0.5,介于两个值之间的一半)可能很有意义。您可能还想使用[URL="http://www.mathworks.com/help/techdoc/ref/contourf.html"]CONTOURF[/URL]函数,该函数将生成色彩填充的轮廓,这些轮廓将清楚地显示1和0的位置:

contourf(x,y,z,1); %# Plots 1 contour level, filling the area on either %# side with different color
[B]注意:[/B]由于要绘制的数据只有一和零,因此绘制轮廓可能不是可视化最佳方法。我将改用类似[URL="http://www.mathworks.com/help/techdoc/ref/imagesc.html"]IMAGESC[/URL]函数的[URL="http://www.mathworks.com/help/techdoc/ref/imagesc.html"]方法[/URL] ,如下所示:

imagesc(x(1,:),y(:,1),z); 请记住,此图中的y轴将相对于[URL="http://www.mathworks.com/help/techdoc/ref/contourf.html"]CONTOURF[/URL]生成的图[URL="http://www.mathworks.com/help/techdoc/ref/contourf.html"]相反[/URL] 。



[url=https://stackoverflow.com/questions/3784059]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 23:23

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.