通过在局部最大值(尖峰)顶部插入函数值来注释绘图

问题描述 投票:0回答:1

我一直在绘制信号频率相对于时间的图。在图中,函数值显示出一些明显的尖峰。我想通过除了函数值(即频率)之外在这些尖峰顶部插入一个小圆圈来选择一些在其他尖峰中最高的尖峰,或者在这几个尖峰上方插入一个矩形并插入频率。我首先尝试找到所有频率的最大值,检索时间点和频率,用箭头注释该值,然后删除该频率并通过查找最大值再次开始循环。不幸的是,它没有起作用。人们不会在图中看到任何注释。

for j=1:5
    [y,t] = max(copy_SignalCORR);
    messageToDisplay = num2str(y)
    annotation('textarrow', [t,t],[y,y-0.1], 'String', messageToDisplay)
    copy_SignalCORR([t]) = []
endfor

我正在使用最近安装的 Octave。您能否提出一些能够提供我需要的注释的代码?非常感谢。

octave
1个回答
0
投票

来自

annotation
的文档(强调我的):

[...] 您可以选择注释类型,然后设置其
使用 X 和 Y 坐标进行基于线的位置
其他人的注释或位置向量 POS。 无论哪种情况,
坐标使用“单位”属性进行解释
注释对象。默认为“标准化”,这意味着
该图的左下角坐标为“[0 0]”并且
右上角“[1 1]”

换句话说,

annotation
函数用于注释图形窗口,其方式与其内容无关。换句话说,您指定“窗口”坐标,而不是“图形”坐标。您的 t 和 y 很可能超出 [0,1] 范围,这意味着您的注释被绘制在窗口可见约束的“外部”。

在您的情况下,将

text
quiver
一起使用可能更合适,它们是使用“图形”坐标分别放置文本和箭头的函数。

或者,如果此过程不需要完全自动,您可以使用 gtext / ginput 首先以图形方式执行此操作并获取所需的坐标,然后只需确保随后以可重现的方式生成图形。

© www.soinside.com 2019 - 2024. All rights reserved.