如何使用Matlab在图中标出极值点坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Matlab在图中标出极值点坐标相关的知识,希望对你有一定的参考价值。

一条曲线z=-2*x.^2+4+sin(2*pi*x),在窗口中划出,并加上极值点的标注。

求大神指导程序应该怎么写?

我就是不会在图中加上极值点标注。最好详细点

1、首先打开软件,然后进行下一步操作。

2、通过plot命令,画出一个图像。

3、此时发现系统根据数据,绘画一个图像。

4、然后在上方找到“data cursor” 这就是坐标指针。

5、然后将鼠标移动到所画的数据上,鼠标指针会发生变化。

6、这里一次只能识别一个坐标,如果需要识别多个坐标,可以使用s=input(n)   然后鼠标点击图像上坐标来获取。就完成了。

参考技术A

1、如图所示,假设需要获取椭圆圈内的最大极值点的坐标。

2、显然,该函数图像上点的分布十分密集,为了能够拾取到正确的点,需要放大图像。使用放大图像按钮,框选需要放大的区域。

3、继续放大函数图像,到各点可清晰分辨为止,如图所示。

4、使用数据游标按钮,在最大极值点上或其附近点击,便拾取到了该最大极值点,其坐标也自动显示出来。本实例的最大极值点坐标为(4,2.22*10^9)。

5、如果放大图像时,框选区域设置的不合理,可以通过平移按钮,将最大极值点拖至图像中央。

6、最后若要获取更精确的坐标数值,可以在所拾取点的右键菜单中,选择将游标数据导出到工作区中再查看。

参考技术B

先画出导数的曲线,根据其零点判断有几个极点,然后对各极点分别指定适当的初值,利用fsolve求出准确的零点位置,再绘图即可。

参考代码如下:

syms x
f=-2*x.^2+4+sin(2*pi*x);
df=diff(f);
ezplot(df,[-3 3])
x0=[-1.8 -1.3 -0.8 0.5 0.2 0.5 1.2];
x0=fsolve(inline(char(df)),x0,optimset('fsolve'));
hold on
plot(xlim,[0 0],'--c')
plot(x0,subs(df,x0),'ro')

 

figure(2)
ezplot(f,[-3 3])
hold on
plot(x0,subs(f,x0),'ro')

 

 

参考技术C

%   导数为 0 的点 函数 fzero

x=-10:.1:10;
z=-2*x.^2+4+sin(2*pi*x);

figure,plot(x,z),grid on,hold on

 x=fzero(@(x)-4*x+2*pi*cos(2*pi*x),0) % 找到极值点
 %%
 x0=x;
z0=-2*x.^2+4+sin(2*pi*x);
plot(x0,z0,'ro')
text(x0,z0,'\\leftarrow 极值点','FontSize',18)
 

参考技术D %导数为零:-4*x+2*pi*cos(2*pi*x)=0

fzero(@(x)-4*x+2*pi*cos(2*pi*x),0)

x=-0.2784
z=2.8609

text(-0.2784,2.8609,'\leftarrow 极值点','FontSize',18)

Matlab:如何在每个数据点获得不同颜色的散点图中设置图例的颜色?

【中文标题】Matlab:如何在每个数据点获得不同颜色的散点图中设置图例的颜色?【英文标题】:Matlab: How to set color of legend in a scatter plot where each data point gets a different color? 【发布时间】:2018-01-14 07:48:43 【问题描述】:

这里是示例代码:

x = rand(100,1);
y = rand(100,1);
score = rand(100,1);
figure;
colormap(flipud(bone));
caxis([0 1])
axis([0 1 0 1])
scatter(x,y,50,score,'+','LineWidth',2);
legend('scores');

我正在使用反转的“骨骼”颜色图,它将纯白色分配给得分值 0,将纯黑色分配给得分值 1。但是,图例似乎自动分配了得分 0,因此如果您运行代码图例颜色为纯白色,不可见。

有没有办法解决这个问题?谢谢。

【问题讨论】:

参见此处:***.com/questions/39952256/… 【参考方案1】:

如果您只想绘制黑色+ 而不显示数据的颜色范围(如颜色条),您可以为此创建一个虚拟图例。这样做的方法如下:

% plot some dummy data for the legend:
scatter(nan,nan,[],1,'+','LineWidth',2)
hold on
% plot your data:
scatter(x,y,50,score,'+','LineWidth',2);
hold off
% add the legend only for the first (dummy) data:
leg = legend('scores');

结果:

【讨论】:

【参考方案2】:

您正在寻找的是colorbar。这显示了一个带有颜色渐变的条形图,用于使用的颜色图中的所有值。

legend('scores'); 行替换为colorbar

附: legend 用于识别同一图中的多个地块。

【讨论】:

是的,我实际上在我的情节中使用了颜色条,但我也有 '+' 和 'o' 代表不同的目标,我也想区分它们。

以上是关于如何使用Matlab在图中标出极值点坐标的主要内容,如果未能解决你的问题,请参考以下文章

matlab中怎么求两曲线交点

matlab如何标注出点的坐标值

在OpenCV打开的图像上,已知图像上的某点坐标,如何获取该点像素值

matlab中怎样让3d图中的线刚好在整数坐标上,比如10,20,30..100这些点上

MATLAB 中加一条直线

WINFORM中如何获取显示器上指定某点坐标的颜色