从一系列excel文件中提取数据(MATLAB)

时间:2014-05-01 08:05:35

标签: excel matlab import

我首先要说的是我在编程时并不擅长提取数据,所以请耐心等待。我认为我的问题很简单,我只是无法弄清楚如何去做。

我的问题是我想要提取存储在同一文件夹中的一系列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'))'做我想做的循环。

3 个答案:

答案 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