2011-12-22 53 views
1

对于某些手势识别软件,我想用matlab函数classregtree构建识别树。有多维矩阵的Matlab classregtree

当我只有手势的二值图像时,我创建了2个强度谱:一个用于x轴,另一个用于y轴。从这些谱图中我想提取一些数据,并用它来构建classregree。我使用的数据的例子是频谱的宽度,尖峰的数量和手势的总面积。但是,我也想使用具有可变数目参数的数据:例如我想要使​​用频谱中单个尖峰的高度作为classregree的参数。然而,classregtree对于每个数据集都需要固定数量的双精度数据,而尖峰数量以及我想要传递的变量数量是可变的。什么是使用这些数据的最佳方式?如果我不能创建一个值(例如,我总是传递10个尖峰值,但是当它们的值小于10时,它们的值将为0),我可以只使用固定数量的参数并传递值0,但是我恐怕它不能很好地工作。

回答

1

处理您的问题的常用方法是制作直方图。直方图的好处是它们总是具有相同的大小。

因此,例如,您可以使用histc制作峰值高度的柱状图(使用固定分箱)。

+0

所以这基本上是传递0值为每个值不正确?因为如果找不到值,我们会得到一个空的bin。顺便说一句,我忘了告诉,但峰值的数量很小(通常低于10),但价值的传播相当大,但非常重要。所以如果我创建一个直方图,我可能只会得到值为0和1的垃圾箱。 – Tiddo 2011-12-22 10:28:55

+0

不是,这是非常不同的。例如,如果您有两个信号[0.1 0.9 0.1 0.9]和[0.1 0.1]。根据你的公式,他们将被描述[0.1 0.9 0.1 0.9]和[0.1 0.1 0 0]。使用直方图(假设三个分箱[0 1/3 2/3 1]),表示形式将为[2 0 2]和[2 0 0] – Oli 2011-12-22 10:34:19

+0

但在我的情况下,2个值很少会接近相同的值。所以一组[0.1 0.9 0.1 0.9]可能不会发生。信号会更像[0.1 0.4 0.9]或其他东西,如果我将这两个值组合在一起,结果将会变化太多。但是我可能会使用不同的值(以前应该考虑过),因为可以将它们组合在一起。 – Tiddo 2011-12-22 10:37:37

0

你是正确的,填写任意值(如零)将无法正常工作。如果您可以合理可靠地分辨出有多少尖峰,并且有足够的数据,那么您可以尝试为每个尖峰数量构建单独的树。