[Matlab]循环中save

循环中save:

采用sprintf和eval灵活结合,非常方便。
先来看eval的help文档:

 eval Execute string with MATLAB expression.
    eval(EXPRESSION) evaluates the MATLAB code in the string EXPRESSION.
    表达式expression可以作为matlab的语句来执行。
    [OUTPUT1,...,OUTPUTN] = eval(EXPRESSION) returns output from EXPRESSION
    in the specified variables.

    Example: Interactively request the name of a matrix to plot.

       expression = input('Enter the name of a matrix: ','s');
       if (exist(expression,'var'))
          plot(eval(expression))
       end

今天跑cpm,把小部分数据集切好了。之前都是一个视频跑一次、存一次。然后手动改路径再继续。为了提高效率(呵呵,有吗?),在外层又写了个循环来跑。如下:


all_dir={};

% 自己写了个Getsubdir函数,用genpath获取了目标路径下面的所有子目录
all_dir = GetSubdir('/home/abc/Documents/Datasets/Test_0328/');
length_dirs=length(all_dir);

%里面还会包含一些不能用的目录,我只需要有图片文件的目录,所以需要过滤:
for i=1:length_dirs
    file_path= all_dir{i};
    img_path_list=dir(strcat(file_path,'/*.jpg'));
    img_num=length(img_path_list);
    if img_num>0
        D = dir(file_path);
        predict = [ ];
            %一些操作
            predict = [predict prediction];
        end

        %这里就是sprintf和eval的搭配使用。noted strcat不能输出save后面的空格
        %(也就是说如果是'save ',是没有用的,显示出来的结果不会有空格,
        %是strcat本身函数这样设定的)所以直接添加32用于表示save后面的空格。
        s=sprintf(strcat('save',32,file_path,'/pre.mat predict'));
        eval(s);

    end
end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值