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