2011-12-22 54 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

你是正確的,填寫任意值(如零)將無法正常工作。如果您可以合理可靠地分辨出有多少尖峯,並且有足夠的數據,那麼您可以嘗試爲每個尖峯數量構建單獨的樹。