在自定义上下文菜单中获取 Matlab 数据提示值

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

在 Matlab 中,我希望在右键单击图中的数据点时打开上下文菜单。所选操作应调用一个函数,我想在其中访问数据点的坐标以进行进一步处理。

Matlab 示例是:

cm = uicontextmenu(fig);
m = uimenu(cm);
m.Text = "Function description";
m.MenuSelectedFcn = @(src,event)myFunction(src,event);

function myFunction(src,event)
...
end

plot(x, y, "ContextMenu", cm);

这按预期工作,因为当我右键单击数据点并单击上下文菜单中的操作时,将调用 myFunction。但是,我无法访问 myFunction 中数据点的 x,y 值。

matlab contextmenu matlab-figure
1个回答
0
投票

如果您确实想实现自定义函数,那么您可以使用当前轴的

CurrentPoint
属性,因此您的函数将类似于

function myFunction(src,event)
    cp = get( gca, 'CurrentPoint' );
    x = cp(1,1);
    y = cp(1,2);
    fprintf( 'x = %.2f, y = %.2f\n', x, y );
end

使用中:


但是,您所描述的功能可以使用数据提示光标和

Export Cursor Data To Workspace...
选项以本机方式实现(无需自定义回调)。

其他优势包括

  • 更容易右键单击,因为您可以在启用数据提示光标的任何地方执行此操作,而不必精确点击该行。
  • 您可以在导出之前查看和移动选定的点
  • 您可以选择多个点,它们都会被导出。

您可以使用内置的刷牙工具获得更多选项,您可以在其中刷洗数据区域,然后

  • 您可以在命令窗口中导出、复制或显示数据
  • 您可以快速突出显示整个数据区域
  • 比数据提示稍微繁琐一点,需要右键点击实际刷到的数据才能得到右键菜单,和自定义回调一样。

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