Я пытаюсь создать цифровой фильтр, который усиливает более высокие частоты аудиофайла.Создание цифрового фильтра с Matlab
Я хотел начать усиливаться при 3,155 КГц = fc и останавливаться при 20 кГц = fd для файлов с частотой дискретизации 44,1 кГц.
Поскольку я никогда не делал ничего подобного до того, как начал писать ручку & и, во-первых, создал передаточную функцию в плоскости s.
Я думал, что
G=(1+s/fc)/(1+s/fd)
должно хватить на данный момент. Впоследствии я вычислил tustin-аппроксимацию (за руку и через matlab), и в обоих случаях я попал в фильтр, который выглядит совершенно неправильно в fvtool
. (что-то вроде num=[5.304 , -4.934]
и den=[1 , -0.6303]
).
Кто-нибудь знает, где я сделал свою ошибку или как создать фильтр, соответствующий моим требованиям?
Обновление @Ryan Смит:
[y,fs]=audioread('test.wav');
s=tf('s');
G=(1+(s/3185))/(1+(s/20000))
D=c2d(G,1/fs,'tustin');
fvtool([5.304 -4.934],[1 -0.6303]);
На тот, который я сделал на бумаге я использовал S = 2 * фс * ((г-1)/(г + 1))
Пожалуйста, добавьте код для того, как вы создали приближение TUSTIN в Матлабе. –
Я обновил свой главный пост, спасибо, что помог мне! – klaus