循环中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