【问题标题】:save specific files with MATLAB commands使用 MATLAB 命令保存特定文件
【发布时间】:2015-02-21 05:17:41
【问题描述】:

我正在尝试将模型保存在最旧的 MATLAB 版本中,如下所示 我查找每个文件夹和子文件夹以找到任何 .mdl 或 .slx 以将其保存为 2007b 版本

我的问题是:

  1. 如果我只是寻找一个扩展名,但我想知道它会起作用 在每个 .mdl 和 .slx 上执行此操作。
  2. save_system 占用太多 时间

你知道我怎样才能得到所有的 .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

【问题讨论】:

  • 'R2017b'?尝试使用“R2007b”
  • 哦,对不起,:) 这只是一个错误(当然我用的是 2007b)
  • 不知道有没有更好的功能。我有点怀疑,因为 MATLAB 实际上已经编写了一个函数,应该以一种很好的方式做到这一点。但是,我遇到了类似的问题(但对于 .mat 文件)。问题是网络连接非常慢。文件大吗?有很多文件吗?您是否尝试过在装有 matlab 的机器和 M 驱动器之间传输文件?如果你这样做了(没有加载或保存文件),你可以看到连接有多快。用相同的文件试试这个并比较这个时间是否成比例。
  • @patrick,我还有第二个问题,怎么说:我想加载并保存所有 .mdl 和 .slx ?

标签: matlab matlab-deployment


【解决方案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)

【讨论】:

  • 我忘了说这个答案只包含以mdl= 开头的内部循环,可能dir 没有返回任何东西,因为cd 丢失了。
猜你喜欢
  • 2013-04-28
  • 2019-07-17
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多