2014-02-21 3 views
1

Я занимаюсь обработкой звука. Я мог загружать некоторые аудиофайлы в MATLAB, воспроизводить их, смешивать и синтезировать сигналы.Фильтр нижних частот в MATLAB, возвращающий значения NaN

Теперь, однако, я хочу извлечь базу, похожую на эквалайзер или фильтр нижних частот, в программу редактирования аудио. Я знаю, что MATLAB имеет множество фильтров и встроенных инструментов для проектирования фильтров; Я просто хочу добавить простой фильтр нижних частот. Я нашел это руководство: http://www.aquaphoenix.com/lecture/matlab10/page4.html

f = 44100; 
n = [1:f]; 
note_a = 440; 
note_csharp = 554.365; 
note_e = 659.255; 
chord_a = sin(2*pi*(note_a/f)*n)+sin(2*pi*(note_csharp/f)*n)+sin(2*pi*(note_e/f)*n); 
fNorm = 200/(f/2); 
[b,a] = butter(10, fNorm, 'low'); 
chords_low = filtfilt(b, a, chord_a); 

я не получаю сообщение об ошибке, но все значения на выходе фильтра NaN. Почему это? Песня в стерео, не так ли?

+0

Каковы значения f & fNorm перед вызовом butter()? Каков результат всех (isfinite (фанки))? – Max

+0

f имеет значение 44100 fNorm имеет значение 0.0091 все (isfinite (funky)) имеет значение [1, 1] – user1661303

+0

Я получил нижний план. Кто-нибудь хочет объяснить, что я сделал неправильно, чтобы я мог избежать этого в следующий раз? Я думал, что вопрос был четко сформулирован, но, возможно, я ошибся. Это также не слишком упрощенно. Я попробовал ответить за полчаса до публикации. Пожалуйста, не стесняйтесь указать, что я сделал неправильно. – user1661303

ответ

1

Порядок вашего фильтра слишком высок для типа дизайна с низкой частотой среза, поэтому вы получаете числовые проблемы. Чтобы быстро исправить ситуацию, уменьшите порядок вашего Butterworth filter на что-то чуть ниже 10. Скриншот 8-го порядка работает для вашего дизайна, или повышение частоты среза также приводит к реальному значению.

Если вам нужен фильтр с частотным откликом, указанным в вашем дизайне, вам необходимо каскадировать секции нижнего порядка. See a detailed old answer I made for information on how to go about this. Функция tf2sos - ваш друг здесь.

+0

Звучал немного более круто, чем я, но работал. Благодарю. – user1661303

Смежные вопросы