使用MATLAB命令保存特定文件
我正试图将模型保存在最古老的MATLAB版本中,如下所示 我查找每个文件夹和子文件夹以找到任何.mdl或.slx,并将其保存为2007b版本 我的问题是:使用MATLAB命令保存特定文件,matlab,matlab-deployment,Matlab,Matlab Deployment,我正试图将模型保存在最古老的MATLAB版本中,如下所示 我查找每个文件夹和子文件夹以找到任何.mdl或.slx,并将其保存为2007b版本 我的问题是: 如果我只是寻找一个扩展,而我在想 在每个.mdl和.slx上执行此操作 save_系统占用的时间太多 时间 您知道如何获取所有.mdl和.slx吗?是否有优化的保存方法 谢谢 rootPath = fullfile('M:\script\ytop','tables'); files = dir(rootPath ); for ii = 3:
rootPath = fullfile('M:\script\ytop','tables');
files = dir(rootPath );
for ii = 3:numel(files)
x = fullfile(rootPath ,files(ii).name);
cd(x);
mdl = { dir('*.mdl'),dir('*.slx')}; % here it works if only I set dir('*.mdl')
for jj = 1:numel(mdl)
load_system(mdl(jj).name);
save_system(mdl(jj).name,mdl(jj).name, 'SaveAsVersion','R2007b');
end
end
仅应用所需的修复代码有一个奇怪的行为。对于mdl,文件将替换为原始文件;对于slx,将在原始文件旁边创建mdl。加载后,您可能需要添加一个
delete(mdl(jj).name)
。'R2017b'?用‘R2007b’试试吧,哦,对不起,:)这只是个错误(当然我用的是2007b),我不知道是否有更好的功能。不过我有点怀疑,因为MATLAB实际上已经编写了一个函数,它应该以一种好的方式来实现这一点。但是,我也遇到过类似的问题(除了.mat文件)。问题是当时的网络连接速度非常慢。文件大吗?有很多文件吗?您是否尝试过在有matlab的机器和M
驱动器之间传输文件?如果您这样做(不加载或保存文件),您可以看到连接速度有多快。用相同的文件试试这个,比较一下这个时间是否成比例。@patrick,我还有第二个问题,如何说:我想加载并保存所有.mdl和.slx?我忘了提到这个答案只包含以mdl=
开头的内部循环,可能dir
没有返回任何内容,因为cd
缺失。
%here you used {} which created a cell array of two structs. cat creates a single struct which.
mdl=cat(1,dir('*.mdl'),dir('*.slx'));
for jj = 1:numel(mdl)
[~,sysname,~]=fileparts(mdl(jj).name);
load_system(mdl(jj).name);
%use only sysname without extension. R2007b is mdl only. You can't store files for R2007b in slx format
save_system(sysname,sysname, 'SaveAsVersion','R2007b');
%close system to free memory.
close_system(sysname);
end