2013-11-01 98 views
1

我有一個關於在MATLAB上對音頻信號執行小波變換的輸出的問題。我使用wavread函數將音頻信號導入MATLAB。然後,我使用wavdec函數(通常是haar或db4變換)對信號執行單級小波變換。爲了將信號轉換回原始音頻信號,然後使用功能wavrec對信號執行逆小波變換。此功能的輸出將我帶回原始音頻信號。然而,許多數據點與原始信號略有偏差(僅約10^-16的數量級,因此非常輕微)。然而,理論上逆變換應該給我確切的原始信號。我不知道我是否做錯了什麼,但是有沒有一個理由,在執行小波變換之後執行反轉,我沒有得到完全原始信號的輸出?非常感謝您的幫助!MATLAB中的小波變換輸出

+0

這是一個很好的問題! 我在MATLAB中看到了與圖像相同的情況。差別非常小,我沒有看到解釋。 我會更貼近你的帖子,看看有經驗的人說什麼。 – Helder

回答

4

計算機中的數字並不像理論數字那麼完美。

爲了將數據存儲在有限的內存中,有必要將其四捨五入到最接近的可表示值。這個舍入非常小,但是你看到的「錯誤」也是如此。

去尋找文章「每個計算機科學家應該知道什麼是浮點算術」,或者是其中一個摘要(文章很棒但很長,總結較短但質量各不相同)。

+0

謝謝你的回答。我猜它與此有關,但我不確定。這很有道理,但爲什麼會有一點點的錯誤。 – Math244

+0

@BenVoigt很好的答案。你的解釋讓你覺得很有意思。 – Helder