汽车仿真软件ADVISOR2002 在高版本Matlab下的兼容使用方法 |
您所在的位置:网站首页 › 计算block_diagram的closefcn出错 › 汽车仿真软件ADVISOR2002 在高版本Matlab下的兼容使用方法 |
Advisor2002,众所周知,只支持Matlab6.5版本,但目前大多数Matlab都是高级版本。一下是总结解决了Advisor2002无法在高版本运行的问题,在Matlab2008a和2010上都运行成功! 修改步骤如下:
1.将ADVISOR2002patchforR13.m拷进Advisor的文件目录,如E:\Program\Advisor2002下;
2.在Matlab中将运行目录也改为E:\Program\Advisor2002;
3.Matlab的Command Window窗口输入ADVISOR2002patchforR13.m,可以以直接运行ADVISOR2002patchforR13.m,之后会看到Advisor的底层模块被不断更新;
4.更新完成后,在Command Window窗口输入advisor,运行advisor2002,之后点continue,如果Matlab提示出错,则找到出错的文件,一般是“get_cycle_info.m”,将第25行的“break”改成“return”,保存后重新运行advisor2002;继续找到出错的地方,将“break”改成“return”;
5.全部修改完后,advisor2002即可正确运行。如果第三步中更新出错,则可先做第四步,再进行第三步,三四步交替来做,直到没有提示错误。
ADVISOR2002patchforR13.m文件内容如下,大家可以新建个m文件,将下面的内容复制粘贴并保存为ADVISOR2002patchforR13.m即可。
%this file will updateall the block diagrams in the models directory in ADVISOR %so that they will workin Mathworks Release 13. This assumesthat you have ADVISOR 2002 %and it is alreadyincluded in your Matlab path which is done automatically when you type %advisor at the commandprompt. % % place this file in yourcurrent working directory in Matlab and type it's name. % % Here's what we postedon the advisor community web site regarding this error. % % Aug-30-2002 7:22 AM % % Regarding the booleantype problem in R13: Release 13 of Matlab has introduced % a new type calledlogical. The problem is in the block diagrams in the accessory % loads masked subsystem.Go to BD_PAR for instance and click on "mechanical accessory loads " % then click on the"Mechanical Accessory Loads V2 " block. You will see a mask windowpop % open. At the top, youwill see the "not" function used. In release 12 and earlier, this % function returned a 1or a 0 for true and false. Now it returns a new type, logical. This % is causing theproblems. To fix the problem, multiply by 1 (which causes a type change % to double). That shouldfix the logical errors.
clear all %change directories to the models directory cd(strrep(which('advisor.m'),'advisor.m','models'))
%get the list ofeverything in the models directory dir_list=dir;
%For the items in thedirectory that are .mdl files, do the following k=1; for i=1:length(dir_list) if ~isempty(strfind(dir_list(i).name,'.mdl')) %suppress warnings warning off open_system(dir_list(i).name);
system=find_system(strrep(dir_list(i).name,'.mdl',''), 'RegExp','on', 'Name', 'Mechanical Accessory\nLoads v2 '); %if the system in question is found do the following if ~isempty(system) %fix the system name z=isspace(system{1}); %find spaces and carriage returns and make sure they arejust spaces for j=1:length(system{1}); if z(j)==1 ; system{1}(j)=' '; end end
settings=get_param(system,'maskvalues');
if strcmp(settings{1}{1},'not(ess_on)') %check to see if already fixed settings{1}{1}='not(ess_on)*1'; %add the *1 to make it a real number instead of a boolean set_param(system{1},'maskvalues',settings{1})%set the mask values save_system(strrep(dir_list(i).name,'.mdl','')); %save theblock diagram saved_systems{k,1}=dir_list(i).name; %keep track of what models were updated k=k+1; end end close_system(strrep(dir_list(i).name,'.mdl','')) end end disp('ADVISOR2002 update for it to run in R13 of Matlab') if exist('saved_systems') disp('the following block diagrams were changed and saved:') disp(saved_systems) else disp('no block diagrams in the models directory needed to be updated') end warning on
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |