如何使用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) 然后鼠标点击图像上坐标来获取。就完成了。
参考技术A1、如图所示,假设需要获取椭圆圈内的最大极值点的坐标。
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)
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在图中标出极值点坐标的主要内容,如果未能解决你的问题,请参考以下文章
在OpenCV打开的图像上,已知图像上的某点坐标,如何获取该点像素值