作为分析的中间步骤,我需要使用当前迭代的索引填充一个名为“ files”的变量。到目前为止,我是手动进行的。我不想为i=1:1000
手动进行操作,因此我在这里寻找一些自动化方法,我尝试了许多功能,但没有任何效果。请帮忙。
谢谢。
下面给出的是我正在运行的代码片段。
clear; clc;
for i=1:10
files{i}.data = {
{
['1.csv']
['2.csv']
['3.csv']
['4.csv']
['5.csv']
['6.csv']
['7.csv']
['8.csv']
['9.csv']
['10.csv']
}};
end
更新:
我正在使用此脚本
clear; clc;
wdir = 'path\';
all_files = 10;
for i=1:10
files{i}.data = {
{
cellstr(strcat(wdir,num2str((1:all_files).'),'.csv'))
}};
end
除了字符串concat函数外,此脚本一切都很好,它为1..9文件和文件编号在路径和文件编号之间生成空格。 10是完美的。请帮助我解决此问题。 我得到这样的东西。
答案 0 :(得分:3)
您可以结合使用compose和cellstr以获得所需的单元格数组:
>> wdir = 'path\';
>> X = 1:10;
>> formatSpec = "%s%d.csv";
>> cellstr(compose(formatSpec,wdir,X)).'
ans =
10×1 cell array
{'path\1.csv' }
{'path\2.csv' }
{'path\3.csv' }
{'path\4.csv' }
{'path\5.csv' }
{'path\6.csv' }
{'path\7.csv' }
{'path\8.csv' }
{'path\9.csv' }
{'path\10.csv'}
对于R2016b之前的MATLAB版本,您可以使用循环和sprintf:
>> wdir = 'path\';
>> X = 1:10;
>> formatSpec = '%s%d.csv';
>> arrayfun(@(x) sprintf(formatSpec,wdir,x),X,'un',0).'
ans =
10×1 cell array
{'path\1.csv' }
{'path\2.csv' }
{'path\3.csv' }
{'path\4.csv' }
{'path\5.csv' }
{'path\6.csv' }
{'path\7.csv' }
{'path\8.csv' }
{'path\9.csv' }
{'path\10.csv'}
答案 1 :(得分:0)
如果我正确理解了这个问题,它将是这样的:
files_length = 1000;
for id=1:files_length
files{id}.data = {sprintf('%d.csv', id)};
end
答案 2 :(得分:-1)
简而言之,您可以在Matlab中尝试命令“ eval”。 如果您熟悉python,则可以使用Idk,Matlab中的“ eval”基本上与python中的“ exec”相同。
下面是一个非常简单的示例:
for i=1:10
eval(['f',num2str(i),'=[];'])
end
您将得到f1,f2,f3 ...一直到f10,而它们都是空矩阵。