我目前有一个MATLAB函数,如下所示:
function outfile=multi_read(modelfrom,modelto,type)
models=[modelfrom:1:modelto];
num_models=length(models);
model_path='../MODELS/GRADIENT/'
for id=1:num_models
fn=[model_path num2str(models(id)) '/']; %Location of file to be read
outfile=model_read(fn,type); %model_read is a separate function
end
end
此功能的想法是为一系列文件执行另一个函数model_read
,并将这些文件输出到工作区(而不是磁盘)。 请注意,model_read的输出是一个结构!我希望函数使用顺序名称将文件保存到工作区,类似于输入:
file1=multi_read(1,1,x)
file2=multi_read(2,2,x)
file3=multi_read(3,3,x)
etc.
可以在工作区中提供file1
,file2
和file3
,而只需调用一次命令,例如:
multi_read(1,3,x)
将提供相同的工作区输出。
基本上我的问题是,如何使用多个名称输出变量的函数,而不必多次调用该函数。
答案 0 :(得分:2)
正如评论中所建议的那样,我会尝试这种更健壮的方法,至少恕我直言:
N = tot_num_of_your_files; %whatever it is
file = cellfun(@(i)multi_read(i,i,x),mat2cell(1:N,1,ones(1,N)),...
'UniformOutput' , false); %(x needs to be defined)
您将通过执行file{i}
来恢复对象。
答案 1 :(得分:1)
以下是执行您所要求的代码:
for i = 1:3
istr=num2str(i)
line = ['file' istr '= multi_read(' istr ', ' istr ', x)']
eval(line)
end
或者,这里是代码,你可以做你想要的:
for i = 1:3
file{i} = multi_read(i,i,x)
end