matlab鼠标获取曲线上的值,GUI 鼠标拖动直线实时读曲线值

现在主要的代码部分已经完成,但是在WindowButtonMotionFcn部分一直读取不了前面的一个句柄的值,不知道为什么,代码如下:

function varargout = untitled1(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name',       mfilename, ...

'gui_Singleton',  gui_Singleton, ...

'gui_OpeningFcn', @untitled1_OpeningFcn, ...

'gui_OutputFcn',  @untitled1_OutputFcn, ...

'gui_LayoutFcn',  [] , ...

'gui_Callback',   []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before untitled1 is made visible.

function untitled1_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

function varargout = untitled1_OutputFcn(hObject, eventdata, handles)

handles.Guideline='N';

varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

[filename, pathname] = uigetfile('*.xls', 'Pick an M-file');

str=[pathname,filename];

y=xlsread(str,'B:B');

[h,l]=size(y);

s=1:1:h;

handles.Data=plot(s,y);

handles.h=h;

handles.l=l;

hold on;

X1=str2num(get(handles.edit1,'String'));

X2=str2num(get(handles.edit2,'String'));

handles.HLine= plot([X1, X1],[-1.6,0.4],'r--','ButtonDownFcn',{@HLine_ButtonDown,handles});

handles.HLine2= plot([X2, X2],[-1.6,0.4],'r--','ButtonDownFcn',{@HLine2_ButtonDown,handles});

set(gcf,'WindowButtonMotionFcn',@fig_WindowButtonMotionFcn);

set(gcf,'WindowButtonMotionUpFcn',@fig_WindowButtonUpFcn);

guidata(hObject,handles)

function edit1_Callback(hObject, eventdata, handles)

X1=str2num(get(handles.edit1,'String'));

handles.HLine= plot([X1, X1],[-1.6,0.4],'r--','ButtonDownFcn',{@HLine_ButtonDown,handles});

guidata(hObject, handles);

% --- Executes during object creation, after setting all properties.

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit2_Callback(hObject, eventdata, handles)

X2=str2num(get(handles.edit2,'String'));

handles.HLine= plot([X2, X2],[-1.6,0.4],'r--','ButtonDownFcn',{@HLine_ButtonDown,handles});

guidata(hObject, handles);

% --- Executes during object creation, after setting all properties.

function edit2_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function fig_WindowButtonUpFcn(hObject, eventdata, handles)

handles.Guideline='N';

ss=41;

guidata(hObject, handles);

function HLine_ButtonDown(hObject, eventdata, handles)

handles.Guideline='HLine';

ss=11;

guidata(hObject, handles);

function HLine2_ButtonDown(hObject, eventdata, handles)

handles.Guideline='HLine2';

ss=21

guidata(hObject, handles);

es)

function fig_WindowButtonMotionFcn(hObject,eventdata, handles)

switch handles.Guideline

case 'HLine'

MousePos = get(gca,'CurrentPoint')  ;

XPos = MousePos(1,1);

Px=num2str(XPos);

set(handles.edit1,'String',Px);

X1=str2num(get(handles.edit1,'String'));

handles.HLine= plot([X1, X1],[-1.6,0.4],'r--','ButtonDownFcn',{@HLine_ButtonDown,handles});

handles.HLine2= plot([X2, X2],[-1.6,0.4],'r--','ButtonDownFcn',{@HLine2_ButtonDown,handles});

case  'HLine2'

MousePos = get(gca,'CurrentPoint')  ;

XPos = MousePos(1,1);

Px=num2str(XPos);

set(handles.edit2,'String',Px);

X2=str2num(get(handles.edit1,'String'));

handles.HLine= plot([X1, X1],[-1.6,0.4],'r--','ButtonDownFcn',{@HLine_ButtonDown,handles});

handles.HLine2= plot([X2, X2],[-1.6,0.4],'r--','ButtonDownFcn',{@HLine2_ButtonDown,handles});

otherwise

end

guidata(hObject, handles);

2a39720edc801e3a55bd2aeffaaaef89.gif

2018-4-11 13:49 上传

点击文件名下载附件

19.68 KB, 下载次数: 8

f5c3d56501a3d0261ce0cb81cbf824a7.gif

2018-4-11 13:49 上传

点击文件名下载附件

4.01 KB, 下载次数: 8

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中,我们可以通过使用GUI来从图片获取曲线。 首先,我们需要创建一个MATLAB GUI界面,可以使用MATLAB自带的GUIDE工具进行创建。在GUI界面中,我们可以添加一些按钮、菜单、文本框和图形组件来实现图像的加载和曲线的提取。 在GUI界面中,我们可以添加一个按钮,用于加载图片。当用户点击这个按钮时,我们可以调用MATLAB的"uigetfile"函数来打开一个文件对话框,让用户选择要加载的图片。一旦选择了图片,我们可以使用MATLAB的"imread"函数将其入到MATLAB中。 接下来,我们可以添加一个按钮,用于提取曲线。当用户点击这个按钮时,我们可以调用MATLAB的"imfreehand"函数,允许用户通过鼠标自由地绘制曲线。用户可以在图片上绘制一个闭合的自由曲线,并释放鼠标后,我们可以通过该函数获取曲线的坐标。 然后,我们可以通过调用MATLAB的"plot"函数,将获取到的曲线坐标绘制在界面上。这样,用户就可以在GUI界面上看到从图片中提取出来的曲线。 最后,我们可以添加一些额外的功能,如保存提取的曲线、调整曲线的颜色和样式等。这些功能可以通过在GUI界面上添加适当的按钮和菜单来实现。 总之,通过创建一个MATLAB GUI界面,并添加加载图片和提取曲线的按钮,我们可以方便地从图片中获取曲线。这个GUI界面可以提供更直观和交互式的方式来进行曲线提取操作,并且可以方便地调整和保存曲线

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值