在Matlab中组织大型数据集

时间:2016-07-04 09:48:50

标签: matlab cell-array organization large-data-volumes matlab-table

我有一个问题,希望你能帮助我。

我在Matlab中导入了一个大型数据集(200000 x 5单元格),其结构如下:

16384

第1列和第5列包含数值,而第2列到第4列包含字符串。

我想将所有这些信息安排到一个具有以下结构的变量中:

'Year' 'Country' 'X' 'Y' 'Value'

我能想到的就是循环遍历整个数据集,找到NewVariable{Country_1 : Country_n , Year_1 : Year_n}(Y_1 : Y_n , X_1 : X_n)CountryYearX变量名称之间的匹配,并结合{ {1}}和Y函数,但这似乎是实现我想要做的事情最无效的方式。

任何人都可以帮助我吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如评论中所述,您可以使用分类数组:

% some arbitrary data:
country = repmat('ca',10,1);
country = [country; repmat('cb',10,1)];
country = [country; repmat('cc',10,1)];
T = table(repmat((2001:2005)',6,1),cellstr(country),...
    cellstr(repmat(['x1'; 'x2'; 'x3'],10,1)),...
    cellstr(repmat(['y1'; 'y2'; 'y3'],10,1)),...
    randperm(30)','VariableNames',{'Year','Country','X','Y','Value'});
% convert all non-number data to categorical arrays:
T.Country = categorical(T.Country);
T.X = categorical(T.X);
T.Y = categorical(T.Y);
% here is an example for using categorical array:
newVar = T(T.Country=='cb' & T.Year==2004,:);

table课程是为这样的事情而制作的,非常方便。只需展开最后一行T.Country=='cb' & T.Year==2004中的逻辑语句即可满足您的需求。 告诉我这是否有帮助;)