2014-08-28 64 views
0

我目前正在尝试制作一个GUI,允许用户选择一系列x值,仅限于一组预定义的“标记”可以出现在一些数据的图表上。 Matlab程序有一堆已经用一些标记分隔的数据,并要求用户选择其中两个标记作为开始和停止点,然后从那里继续。Matlab:如何与图形进行交互以通过GUI定义范围

我的问题是Matlab是否有一个内置函数或对象,它会在图上放置某种交互式标记(最好是在图的底部,以免模糊数据)用户可以点击,以便我可以从中获取回调函数,并查看用户选择了哪个标记(也可能有能力更改颜色等来表示其选择)。

最好答案不会涉及任何附加组件,但任何答案和任何帮助将不胜感激。谢谢!

+0

您可以使用两个滚动条,一个选择较低的值,一个选择较高的值。 – Molly 2014-08-28 16:35:49

+0

这当然是一个可行的选择,谢谢!但是,如果可能的话,我宁愿根据图形制作界面。如果我不知道怎么做,我会考虑你的回应! – sgbrown 2014-08-28 17:31:53

回答

2

这是一个非常简单的例子,使用ginput,要求用户选择一个起点和终点来绘制数据。

clear 
clc 
close all 

x = 1:15*pi; 

figure 
plot(x,sin(x),'LineWidth',2); 

uiwait(msgbox('Select a start and finish point')) 

a = zeros(1,2); 
[a,~] = ginput(2); 

xStart = a(1); 
xFinish = a(2); 

set(gca,'XLim',[xStart xFinish],'XTick',round(xStart):1:round(xFinish)) 

这是你想过的吗?你真的需要回拨还是足够了?如果不是,你能否详细说明你需要什么样的标记?

希望有帮助!

+0

感谢您的回答!这与我想要的类似,但我需要将(1)和(2)的值限制为某些预设值(我当然可以从用户那里获得“常规”区域,并选择最接近的标记,但如果可能的话,我想要比这更干净一点)。 你说得对,我不需要回调,我只是认为答案会涉及一个GUI对象。最后,我将使用这些标记的x值来截断数据并继续处理它,但它们确实应该限制为预设值。再次感谢您的回答,这是一个开始的好地方! – sgbrown 2014-08-28 17:30:41

+0

好吧,那么我会挖掘一些更复杂的东西:) – 2014-08-28 17:33:51

+0

你期望有很多标记? – 2014-08-28 17:34:45