使用MATLAB命令保存特定文件

时间:2015-02-20 15:02:42

标签: matlab matlab-deployment

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

我遇到的问题是:

  1. 如果我只是寻找一个扩展,它可以工作,而我想知道 在每个.mdl和.sxx上执行此操作。
  2. save_system需要太多 时间
  3. 你知道我怎么能得到所有.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
    

1 个答案:

答案 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)