Выход вейвлет-преобразования в MATLAB

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


person Math244    schedule 01.11.2013    source источник
comment
Это очень хороший вопрос! Я видел ту же ситуацию в MATLAB с изображениями. Разница настолько незначительна, что я не смотрел на объяснение. Я буду следить за вашим постом ближе, чтобы увидеть, что говорят опытные ребята.   -  person Helder    schedule 21.12.2015


Ответы (1)


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

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

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

person Ben Voigt    schedule 01.11.2013