• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-17
  • 语言: Matlab
  • 标签: matlab  

资源简介

MatlabGUI调用Simulink编译成可执行的exe文件的解决方法-GUIDE_fig.m
我(们)曾经N次遇到过这样的提问:

“为什么GUI里如果使用sim, simset等函数时,就不能编译成可执行的exe文件发布呢?”

我们也解释过很多次,原因是Matlab的compiler不支持sim等与simulink相关的函数,同样,比如说神经网络相关的函数也不支持。

然而,GUI和Simulink混合编程,是可以编译成可执行exe文件的,使用Matlab自带的RTbuilder工具箱函数编译即可。

使用的方法是:先使用RTW把simulink编译成exe文件,然后与GUI一起编译(GUI可以和exe文件一起编译的)

当然,这个时候请特别注意:不需要在GUI里使用sim函数了,流程是这样的:

1:设计GUI回调函数的时候,把GUI传递的参数传递给Simulink时,不要直接使用simset等函数,而是把参数写到一个mat文件里,比如:

x = [0.2 handles.In1 handles.In2]';
save Input.mat x

2:设计Simulink模型的时候,记得让simulink从mat文件里读取参数(就是刚刚GUI写入的参数),同样,输出参数也写到mat文件里,(如output.mat), 比如:
Matlab57.jpg Matlab GUI调用Simulink,编译成可执行的exe文件的解决方法

3:在GUI回调函数里,不要直接使用sim命令,而是直接调用exe文件(simulink模型编译 好的exe文件)

!SL_model.exe

4:如果要在GUI上面显示参数,直接读取output.mat文件即可:

load Output.mat
set))
guidata

现在大家对整个流程应该熟悉了吧? 也就是Matlab GUI与Simulink设计的程序,照样可以编译成exe文件发布...

附件里为用到的.m, ,fig和mdl文件,下载试一下如下命令:

GUIDE_fig.fig Matlab GUI调用Simulink,编译成可执行的exe文件的解决方法
GUIDE_fig.m Matlab GUI调用Simulink,编译成可执行的exe文件的解决方法
SL_model.mdl Matlab GUI调用Simulink,编译成可执行的exe文件的解决方法

x = [0 0 0]';
save Input.mat x
rtwbuild
mcc -m GUIDE_fig.m -a SL_model.exe


注明:以上文件均来自Mathworks公司提供,Matlab中文论坛翻译整理。

资源截图

代码片段和文件信息

function varargout = GUIDE_fig(varargin)
%GUIDE_FIG M-file for GUIDE_fig.fig
%      GUIDE_FIG by itself creates a new GUIDE_FIG or raises the existing
%      singleton*.
%
%      H = GUIDE_FIG returns the handle to a new GUIDE_FIG or the handle to
%      the existing singleton*.
%
%      GUIDE_FIG(‘Property‘‘Value‘...) creates a new GUIDE_FIG using the
%      given property value pairs. Unrecognized properties are passed via
%      varargin to GUIDE_fig_OpeningFcn.  This calling syntax produces a
%      warning when there is an existing singleton*.
%
%      GUIDE_FIG(‘CALLBACK‘) and GUIDE_FIG(‘CALLBACK‘hobject...) call the
%      local function named CALLBACK in GUIDE_FIG.M with the given input
%      arguments.
%
%      *See GUI Options on GUIDE‘s Tools menu.  Choose “GUI allows only one
%      instance to run (singleton)“.
%
% See also: GUIDE GUIDATA GUIHANDLES

% Edit the above text to modify the response to help GUIDE_fig

% Last Modified by GUIDE v2.5 12-Dec-2005 09:54:06

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name‘       mfilename ...
                   ‘gui_Singleton‘  gui_Singleton ...
                   ‘gui_OpeningFcn‘ @GUIDE_fig_OpeningFcn ...
                   ‘gui_OutputFcn‘  @GUIDE_fig_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

% --- Outputs from this function are returned to the command line.
function varargout = GUIDE_fig_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;


function In1_Callback(hobject eventdata handles)
% hobject    handle to In1 (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 In1 as text
%        str2double(get(hobject‘String‘)) returns contents of In1 as a double
handles.In1 = str2double(get(hobject‘String‘));
guidata(hobjecthandles)

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

评论

共有 条评论