高版本的matlab可以打开低版本的simulink文件(文件类型为.slx或.mdl),但低版本的matlab无法打开高版本的simulink文件。
由于版本升级、需要分享给别人等原因,常常需要修改slx文件的版本。一般来说,只需要将slx文件打开后保存为早期版本即可。这一方法已经有很多人给出了。
一般而言,正常使用中,上述方法已经足够大家使用。但少数情况下,比如将一段时间的资料全部分享给某人,而某些人因为电脑性能等问题,只安装了早期matlab版本,例如笔者遇见某些人在2022年还用着matlab2014b。为此,需要一种可以批量修改slx版本的方法。在csdn里,已经有大佬给出了一种方法,点击即可跳转。
但该文章中,仅给出了修改当前目录下所有slx文件的方法和单个文件修改的方法,并没有给出指定路径下的文件修改方法。为此,笔者撰写了下面的代码。
代码的核心部分在try,catch结构中,其余部分大家可以根据需要自行修改。
Path = "文件路径";
dtd = ["*.slx";"*.mdl"]; %两种可能的文件格式
Version = "R2018b";
for ti = 1:length(dtd)
cata = dir(strcat(Path,dtd(ti))); %使用dir读取path中文件后缀名为dtd规定类型的文件
for di = 1:length(cata)
Filename = strcat(Path,cata(di).name);
fname = string(strsplit(cata(di).name,"."));
newname = strcat(Path,"new\",fname(1),Version,".",fname(2));
try
open_system(Filename) %在simulink中打开slx文件
% open_system(Filename,'loadonly') %仅加载slx文件,而不在窗口中打开slx文件
try
save_system(Filename,newname,"ExportToVersion",Version) %保存为指定版本
try
close_system(Filename) %关闭slx文件
catch
disp(strcat("cannot close",cata(di).name))
end
catch
disp(strcat("cannot save",cata(di).name))
end
catch
disp(strcat("cannot open",cata(di).name))
end
end
end
clear di ti fname dtd