2013-11-01 8 views
1

У меня вопрос о выходе вейвлет-преобразования в MATLAB на аудиосигнале. У меня есть аудиосигнал, импортированный в MATLAB, используя функцию wavread. Затем я выполняю одноуровневое вейвлет-преобразование по сигналу с использованием функции wavdec (обычно преобразования haar или db4). Чтобы преобразовать сигнал обратно в исходный аудиосигнал, я затем выполняю инверсное вейвлет-преобразование по сигналу, используя функцию wavrec. Выход этой функции возвращает меня к исходному аудиосигналу. Тем не менее, многие точки данных немного от исходного сигнала (только примерно на величину 10^-16, поэтому он очень мал). Однако теоретически обратное преобразование должно дать мне точный исходный сигнал. Я не уверен, что я делаю что-то неправильно, но есть ли причина, что после выполнения вейвлет-преобразования, а затем выполнения обратного, что я не получаю вывод точно исходного сигнала? Большое спасибо за любую помощь!Выход преобразования вейвлет-сигнала в MATLAB

+0

Это очень хороший вопрос! Я видел такую ​​же ситуацию в MATLAB с изображениями. Разница настолько незначительна, что я не смотрю на объяснение. Я буду следить за вашим сообщением ближе, чтобы узнать, что говорят опытные ребята. – Helder

ответ

4

Номера в компьютере не такие идеальные, как теоретические числа.

Для хранения ваших данных в конечном объеме памяти необходимо округлить его до ближайшего представляемого значения. Это округление очень мало, но так же и «ошибка» вы видите.

Ищите статью «Что каждый компьютерный ученый должен знать о арифметике с плавающей точкой» или одно из резюме (статья велика, но длинна, краткие описания короче, но отличаются по качеству).

+0

Спасибо за ваш ответ. Я догадался, что это как-то связано с этим, но я не был уверен. Это имеет смысл, хотя почему-то будет некоторая ошибка. – Math244

+0

@BenVoigt хороший ответ. Ваше объяснение делает тотальный смысл. – Helder