三维数组

时间:2014-08-01 16:43:52

标签: arrays matlab multidimensional-array

在分类问题中,我有c个数据类,每个数据都有e个数据示例,每个示例都由长度为f的特征向量表示。在Matlab中表示这种结构的最佳方法是什么?

我可以使用c-by-e单元格数组,其中每个元素都是长度为f的1D数组。但是,我想避免使用单元格数组。如果我使用3D阵列,我不知道如何实现它。尺寸是多少? (c, e, f)(f, e, c)

2 个答案:

答案 0 :(得分:2)

3D矩阵的限制是尺寸必须具有固定长度(因此所有类必须具有相同数量的示例和特征)。

假设您需要一般性答案,并且想要避免使用单元格数组,则可以使用结构数组:

c(3).name = 'cls3';  %// name of 3rd class

c(3).example(1).name = 'c3e1';    %// name of 1st example of 3rd class 
c(3).example(1).data = [1 2 3 4];  %// not sure what is your data structure here
c(3).example(1).features_ID = [101 102];  %// ID of features

c(3).example(2).name = 'c3e2';
c(3).example(2).data = [1 2 3 4 5 6];
c(3).example(2).features_ID = [101 102 103];

我只填写了第3课,有2个例子,但你明白了。

答案 1 :(得分:1)

通常最好将最长的矢量放在一列中。因此,假设(f, e, c)确实是最长的维度,(c, e, f)应该优于f

MATLAB在列中工作时效率最高,许多内置函数默认编码为列式工作。

来源:http://www.mathworks.com/help/images/using-columnwise-processing-to-speed-up-sliding-neighborhood-or-distinct-block-operations.html