在分类问题中,我有c
个数据类,每个数据都有e
个数据示例,每个示例都由长度为f
的特征向量表示。在Matlab中表示这种结构的最佳方法是什么?
我可以使用c-by-e
单元格数组,其中每个元素都是长度为f
的1D数组。但是,我想避免使用单元格数组。如果我使用3D阵列,我不知道如何实现它。尺寸是多少? (c, e, f)
或(f, e, c)
?
答案 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在列中工作时效率最高,许多内置函数默认编码为列式工作。