2010年9月6日 星期一

Max/MSP/Jitter 中消除過高或過低的數據之方法

常有人問我要如何讓感應器的數據不要波動太大或過於不穩定。以前在美國學習音樂偵測技術時,我的主修老師 Andrew May 說了一堆關於「線性回歸」的方法,當時似懂非懂,最近又把他所題的方法重新拿來檢視,重新思考一次他所用的方法。

在 Max/MSP/Jitter 中,最簡易的柔化數據變化的方法是使用 bucket 物件,把最近收集到的數據算出平均值(使用 mean 物件)。我的老師則提供了另一種方法,是以線性回歸的方式,他設計了一套線性回歸 ( linear regression ) 的物件組 ( regression tool ),可用來將一系列的數據,計算出一個最佳的直線或曲線 ( best fitting line ),使得每個點與這條線的距離 (error of prediction) 之的總和為最小,其中包含下面幾項工具:

m_line:用來將存在於預設大小的 buffer 中的數據,計算出最佳直線(包含斜率、y 軸截距等數值)

m_avg :用來計算 buffer 中的數值之平均數。

m_para:用來將存在於預設大小的 buffer 中的數據,計算出最佳曲線)

regress:與 m_line 的功能類似,但是所取的數值是從開始計算起至當前所累積的數據。

regress2:與 m_para 的功能類似,但是所取的數值是從開始計算起至當前所累積的數據。

註:以上這幾個物件中,最常用的是 m_avg 的平均值(用來柔化數據)以及 m_line 的斜率數據(用來判斷新近的資料是否與多數數據差距過大)。
註:回歸分析的簡介可參考:http://onlinestatbook.com/index.html

沒有留言:

張貼留言