我是靠谱客的博主 朴素人生,最近开发中收集的这篇文章主要介绍matlab调用函数求函数值,matlab函数调用及数据传递(转载),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

函数挪用

在一个m文件中,可以界说多个函数,但是文件名必定要与第一个函数(主函数)一概,

该文件中其他函数则为本文件的私有函数,外部不行访问(可以经历参数挪用的要领访问,下面会形容)。

比如在一个步骤中,创建一个fig后,会天生这样一个m文件:

function varargout =febirdfun(varargin)

gui_Singleton = 1;

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

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @febirdfun_OpeningFcn, ...

'gui_OutputFcn', @febirdfun_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

剖析 一下这个主函数:结果 gui_State是一个机关,指定了figure打开和输出函数,

开始 gui_CallBack为空,倘使输入参数个数不为0,接下来将输入第一个参数通报给gui_State.callback。

接下来用交给 gui_mainfcn函数治理,gui_mainfcn 按照gui_State和传入参数

来确定是执子函数,仍旧打开 fig 文件和运行 OpeningFcn和OutputFcn。

如过 gui_Callback为空,那么就运行打开主窗口fig文件,不然,挪用子函数

这个函数的作用有:

1.当输入不带参数的时辰,可能打开fig文件,而且初始化控件

2.当指定必要挪用的函数名时,可以作为其他控件callback运用 (实则挪用同文件中的子函数)

比如,在某一个控件的 callback 内里这样写:(febrdfun为主函数)

febirdfun("@push_button_Callback",gcbf,[])

这样的挪用就可以挪用文件内里的子函数。

固然也可以运用其他文件内里的函数作为callback,不外那样的话,数据通报会繁难一些。

下面看figure Openning Function

%================================

function Main_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

% 通常在这内里界说自己的数据机关比如

s=struct("P1",v1...

"P2",v2);

handles.MyStruct=s;

% 更新handles数据机关 特别重要!!

guidata(hObject, handles);

%================================

function varargout = Main_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

这个函数是输出返回值的界说

注意: matlab 中,function 对应的 end 可以没有,但是随着版本的更新,end将会被要求。

六:数据通报

在matlab GUI步骤中实行值通报我时时运用的两种要领:

1.使用主函数的 handles 数据机关传值

比如在某一个图像窗口句柄 中有一个方向 handles(可以界说自己的数据机关)

那么在一个子Callback函数中,可以经历handles通报数据:

function sliderbar1_Callback(hObject,eventdata,handles)

%% eg1

v1=get(hObject,'value');

obj=handles.Text1 %直接定位 Tag 为 Text1的控件

set(obj,'value',v1);

%% eg2

handles.MyStruct.P1=v1; % 改变handles中的数据

guidata(hObject,handles); %更新 handles !!重要

end

2.使用控件的 UserData 来传值

每一个控件平常都有一个属于自己的自界说域,userData,你可以界说这样一个域用来存储自己的数据,比如在界说 timer 的 TimerFcn中

t1=timer('TimerFcn',{@Timer1Fcn},'ErrorFcn',@Timer 1ErrorFcn},'Period',1.0,'ExecutionMode','fixedrate' );

t1.Userfata=handles.MyStruct;

这里 Timer1Fcn的挪用看似没有传入任何参数,现实上此函数的界说必定要有至少两个参数

function Timer1Fcn(obj,eventata)

obj.UserData=XXXXX;%可以这样共享数据

end

固然Timer界说的时辰答应这样通报一个参数,固然这样也可以实行传值.

t1=timer('TimerFcn',{@Timer1Fcn,handles},'ErrorFcn ',{@Timer1ErroFcnr,handles},'Period',1.0,'Execution Mode','fixedrate');

最后

以上就是朴素人生为你收集整理的matlab调用函数求函数值,matlab函数调用及数据传递(转载)的全部内容,希望文章能够帮你解决matlab调用函数求函数值,matlab函数调用及数据传递(转载)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部