Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MATLAB命令保存特定文件_Matlab_Matlab Deployment - Fatal编程技术网

使用MATLAB命令保存特定文件

使用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:

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

我的问题是:

  • 如果我只是寻找一个扩展,而我在想 在每个.mdl和.slx上执行此操作
  • save_系统占用的时间太多 时间
  • 您知道如何获取所有.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
    

    仅应用所需的修复代码有一个奇怪的行为。对于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