我首先要说的是我在编程时并不擅长提取数据,所以请耐心等待。我认为我的问题很简单,我只是无法弄清楚如何去做。
我的问题是我想要提取存储在同一文件夹中的一系列excel文件中的部分数据。具体来说,让我说我有10个excel文件,每个文件有1000个数据(来自A1:A1000)。我想在每个excel文件中提取前100个数据(A1:A100)并将其存储在一个大小为10x100的变量中(每行代表每个文件)。
如果你们中的任何人能帮助我,我将非常感激。这将使我的数据处理速度更快。
编辑:我已经找到了代码,但我的下一个问题是创建另一个循环,以便它将重新读取10个文件,但这次提取A101:A200直到A901:A1000。这里是我写的代码:
for k=1:1:10
file=['',int2str(k),'.xlsx'];
data=(xlsread(file,'A1:A100'))';
z(k,:)=data(1,:);
end
我不确定如何编辑此部件数据=(xlsread(文件,' A1:A100'))'做我想做的循环。
答案 0 :(得分:1)
我的下一个问题是创建另一个循环,使其重新读取10个文件,但这次提取A101:A200直到A901:A1000。
为什么呢?为什么不在一个块中提取A1:A1000然后reshape
或以其他方式分割数据?
data(k,:)=(xlsread(file,'A1:A1000'))';
然后A1:A100
数据位于data(k,1:100)
,依此类推。如果你这样做:
data = data(reshape, [10 100 10]);
然后data(:,:,1)
应该是原始循环中的A1:A100值,依此类推,直到data(:,:,10)
。
答案 1 :(得分:0)
这里建议循环读取不同的单元格。显然,您可以在z
中更改收集数据的排列方式。我把它作为表示要读取的不同单元格的第一个索引(1表示1:100,2表示101:200等等),第二个索引是文件编号(根据原始代码)和第三个索引索引数据(100个数据点)。
% pre-allocate data
z = zeros(10,10,100);
for kk=1:10
cells_to_read = ['A' num2str(kk*100-99) ':A' num2str(kk*100)];
for k=1:10
file=['',int2str(k),'.xlsx'];
data=(xlsread(file,cells_to_read))';
z(kk,k,:)=data(1,:);
end
end
答案 2 :(得分:0)
这应该这样做:
for sec = 1:1:10
for k=1:1:10
file=['',int2str(k),'.xlsx'];
section = ['A', num2str(1+(100*(sec-1)), ':A', mum2str(100*sec)]
data=(xlsread(file, section))';
z(k,:)=data(1,:);
end
output(sec) = z;
end