我正在尝试将模型保存在最旧的MATLAB版本中,如下所示 我查找每个文件夹和子文件夹以查找任何.mdl或.slx以将其另存为2007b版本
我遇到的问题是:
你知道我怎么能得到所有.mdl和.slx并且有一种优化的保存方式吗?
谢谢
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
答案 0 :(得分:1)
%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
仅应用所需的修补程序,您的代码有一个奇怪的行为。对于mdls,文件将替换为原始文件,对于slx,将在原始文件旁边创建一个mdl。您可能需要在加载后添加delete(mdl(jj).name)
。