使滑块成为matlab指南中的进度条

使滑块成为matlab指南中的进度条,matlab,matlab-figure,matlab-guide,Matlab,Matlab Figure,Matlab Guide,我很难让滑块成为进度条。 我有两个按钮。一个接受文本编辑器(用户输入)的起始值,另一个启动循环的进程。 然后我得到了一个滑块,当函数循环更改“I”值时,我尝试移动它(沿更新/显示进度) 这是我的密码 function varargout = myfig(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ...

我很难让滑块成为进度条。 我有两个按钮。一个接受文本编辑器(用户输入)的起始值,另一个启动循环的进程。 然后我得到了一个滑块,当函数循环更改“I”值时,我尝试移动它(沿更新/显示进度)

这是我的密码

function varargout = myfig(varargin)

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @myfig_OpeningFcn, ...
                   'gui_OutputFcn',  @myfig_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 myfig is made visible.
function myfig_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to myfig (see VARARGIN)

% Choose default command line output for myfig
handles.output = hObject;
handles.min = get(handles.ed,'value');
handles.max = 10000;
handles.i = 0;
% Update handles structure
guidata(hObject, handles);

% UIWAIT makes myfig wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = myfig_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in pb.
function pb_Callback(hObject, eventdata, handles)
% hObject    handle to pb (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
value = str2double(get(handles.ed,'string'));
value
assignin('base','value',value)


% --- Executes on slider movement.
function sl_Callback(hObject, eventdata, handles)
% hObject    handle to sl (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
set(handles.sl,'Max',handles.max);
set(handles.sl,'min',handles.min);
set(handles.sl,'value',handles.i);


% --- Executes during object creation, after setting all properties.
function sl_CreateFcn(hObject, eventdata, handles)
% hObject    handle to sl (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end



function ed_Callback(hObject, eventdata, handles)
% hObject    handle to ed (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of ed as text
%        str2double(get(hObject,'String')) returns contents of ed as a double



% --- Executes during object creation, after setting all properties.
function ed_CreateFcn(hObject, eventdata, handles)
% hObject    handle to ed (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in pbs.
function pbs_Callback(hObject, eventdata, handles)
% hObject    handle to pbs (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 myfile;


function [] = myfile(handles)
%MYFILE Summary of this function goes here
%   Detailed explanation goes here
% prompt('Please enter a valid number to start');
h = waitbar(0,'Processing...');
% i = input('Please enter a valid number to start');
i = evalin('base','value');
while(i < 10000)
    clc
    i = i + 1;
    waitbar(i/10000,h)
     handles.i = i;
     set(handles.sl,'value',i/10000);
     guidata(hObject,handles);
end
close(h);
函数varargout=myfig(varargin)
%开始初始化代码-不编辑
gui_Singleton=1;
gui\u State=struct('gui\u Name',mfilename。。。
“gui_Singleton”,gui_Singleton。。。
‘gui_OpeningFcn’,@myfig_OpeningFcn。。。
“gui_OutputFcn”,@myfig_OutputFcn。。。
“gui_布局FCN”,[]。。。
“gui_回调”,[]);
如果nargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
结束
如果痛风
[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});
其他的
gui_mainfcn(gui_State,varargin{:});
结束
%结束初始化代码-不编辑
%---在myfig显示之前执行。
函数myfig_OpeningFcn(hObject、eventdata、handles、varargin)
%此函数没有输出参数,请参阅OutputFcn。
%将句柄映射到图形
%eventdata保留-将在未来版本的MATLAB中定义
%带有句柄和用户数据的句柄结构(请参见GUI数据)
%myfig的varargin命令行参数(参见varargin)
%为myfig选择默认命令行输出
handles.output=hObject;
handles.min=get(handles.ed,'value');
最大值=10000;
i=0;
%更新句柄结构
guidata(hObject、handles);
%UIWAIT使myfig等待用户响应(请参阅UIRESUME)
%uiwait(handles.figure1);
%---此函数的输出返回到命令行。
函数varargout=myfig\u OutputFcn(hObject、eventdata、handles)
%用于返回输出参数的varargout单元格数组(请参见varargout);
%将句柄映射到图形
%eventdata保留-将在未来版本的MATLAB中定义
%带有句柄和用户数据的句柄结构(请参见GUI数据)
%从handles结构获取默认命令行输出
varargout{1}=handles.output;
%---在pb中按按钮时执行。
函数pb_回调(hObject、eventdata、handles)
%HOBOT手柄至pb(见GCBO)
%eventdata保留-将在未来版本的MATLAB中定义
%带有句柄和用户数据的句柄结构(请参见GUI数据)
value=str2double(get(handles.ed,'string');
价值
赋值('base','value',value)
%---在滑块移动时执行。
函数sl_回调(hObject、eventdata、handles)
%将hObject句柄复制到sl(参见GCBO)
%eventdata保留-将在未来版本的MATLAB中定义
%带有句柄和用户数据的句柄结构(请参见GUI数据)
%提示:get(hObject,'Value')返回滑块的位置
%get(hObject,'Min')和get(hObject,'Max')来确定滑块的范围
set(handles.sl、'Max',handles.Max);
set(handles.sl、'min',handles.min);
set(handles.sl,'value',handles.i);
%---在设置所有属性后,在对象创建期间执行。
函数sl_CreateFcn(hObject、eventdata、handles)
%将hObject句柄复制到sl(参见GCBO)
%eventdata保留-将在未来版本的MATLAB中定义
%句柄为空-在调用所有CreateFCN之后才创建句柄
%提示:滑块控件通常具有浅灰色背景。
如果isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
集合(hObject,'BackgroundColor',[9.9.9]);
结束
函数ed_回调(hObject、eventdata、handles)
%hObject句柄到ed(参见GCBO)
%eventdata保留-将在未来版本的MATLAB中定义
%带有句柄和用户数据的句柄结构(请参见GUI数据)
%提示:get(hObject,'String')以文本形式返回ed的内容
%str2double(get(hObject,'String'))以双精度形式返回ed的内容
%---在设置所有属性后,在对象创建期间执行。
函数ed_CreateFcn(hObject、eventdata、handles)
%hObject句柄到ed(参见GCBO)
%eventdata保留-将在未来版本的MATLAB中定义
%句柄为空-在调用所有CreateFCN之后才创建句柄
%提示:编辑控件在Windows上通常有白色背景。
%参见ISPC和计算机。
如果ispc&&isqual(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
设置(hObject、'BackgroundColor'、'white');
结束
%---在pbs中按下按钮时执行。
函数pbs_回调(hObject、eventdata、handles)
%pbs的hObject句柄(见GCBO)
%eventdata保留-将在未来版本的MATLAB中定义
%带有句柄和用户数据的句柄结构(请参见GUI数据)
我的文件;
函数[]=myfile(句柄)
%此函数的MYFILE摘要显示在此处
%这里有详细的解释
%提示('请输入一个有效的数字开始');
h=waitbar(0,'Processing…');
%i=输入('请输入一个有效的数字开始');
i=evalin('基准','值');
而(i<10000)
clc
i=i+1;
酒吧间(i/10000,h)
i=i;
集合(handles.sl,'value',i/10000);
guidata(hObject、handles);
结束
关闭(h);
Matlab版本:2014b

首先:我想了解当函数嵌套在GUI文件中时如何处理这个问题

第二:如果您将函数移动到另一个.m文件中。[使用set/get/guidata等,不通过函数调用传递输入/输出]


请让我知道。

对于第一种情况,您需要修改您的函数
myfile
。在while循环之前,需要设置滑块的最小值和最大值。这将允许您使用i作为您的值

set(handles.sl,'Min',1,'Max',10000)

要允许滑块更新,您需要在循环中添加
refresh
drawnow
。如果您不使用这些,Matlab将等待绘制ui更改,直到代码结束。您的循环应该如下所示:

while(i<10000)
clc
i=i+1