如何判断mcc编译的MATLAB函数是在MATLAB中还是独立程序中调用?
区分MATLAB环境与编译后独立应用的调用状态
要判断函数是在MATLAB中运行还是在mcc编译的独立应用中运行,直接使用MATLAB内置的isdeployed函数即可:
- 在MATLAB交互环境或脚本中调用时,
isdeployed返回false - 在编译后的独立可执行程序中运行时,
isdeployed返回true
将你的函数修改为如下形式,即可实现需求的参数检查逻辑:
function out_mat = myFunc(nElem, varargin) % 判断是否在MATLAB环境中运行 call_in_matlab = ~isdeployed; % 根据运行环境设置输入参数检查规则 if call_in_matlab narginchk(1,2); else narginchk(2,2); end save_file = false; add_to_file = ''; if nargin == 2 save_file = true; add_to_file = varargin{1}; end out_mat = rand(nElem); if save_file % 写入文件的逻辑示例 save(add_to_file, 'out_mat'); end end
修改后:
- 在MATLAB中调用时,支持传入1个或2个参数
- 运行编译后的独立程序时,必须传入2个参数,否则会触发参数数量错误提示
内容的提问来源于stack exchange,提问作者If_You_Say_So
相关产品推荐
相关产品推荐

