Matlab - 将数据从几个单元阵列移动到一个主单元阵列

时间:2013-04-23 23:36:54

标签: matlab multidimensional-array cell

我有一个数据集,包含大约1000个150万行文件,每个文件有6列。这些文件来自大约50个气象站。理论上,所有站都是时间同步的。我已经存储了Matlab中单元阵列中50个站点中每个站点的数据。每个站具有与文件对应的单元阵列的单元阵列。也就是说,站1在单元阵列#1中,并且单元阵列#1具有与文件数对应的X单元阵列。然后每个包含实际数据。 我想将所有数据放到一个位置,第一列是“时间”,其他50列是站。我不需要6列中的所有数据。然而。 我的策略是创建一个单元格数组,其中包含所有可能时间的列,后跟50个空列,数据将放入其中。然后我查看每个文件,找到时间的交集,从文件和新数组中获取索引,并将数据转储到数组中。

我进行转换的代码如下所示:

% One-second time data in datenum format

    times = datenum(2011,11,20,0,0,0:TotalSeconds)';

    % The number of files associated with each station

    AllLengths = cellfun(@length,TotalData);

% Preallocating irradiance cell array

    IrradianceData = cell(length(times),length(AllLengths)+1);

% Loop through the times (November 20, 2011, 00:00:00 to present) and find common times from the data


for ii = 1:length(AllLengths)

    for jj = 1:AllLengths(ii)
         % This finds the indices of the times within the station file
        [~,IdxData,Idxtimes] = intersect(TotalData{ii,1}{jj,1}(:,1),times);

         % This adds the irradiance values to another cell array
         % Can I do this more efficiently?

        for kk = 1:length(Idxtimes)
        IrradianceData{Idxtimes(kk),ii+1} = TotalData{ii,1}{jj,1}(IdxData(kk),5);
        end
    end

end 

有没有办法搜索数据文件,并以矢量化方式将相关数据添加到单元格数组?它现在的设置方式非常慢。我很感激任何建议。

0 个答案:

没有答案