Я разрабатываю фильтр для wavfile, на самом деле то, что я хочу сделать, это отделить диапазон определенных частот, усилить их, а затем добавить обратно в wav-файлMatlab: как получить индексы отфильтрованного вывода
[y Fs]=wavread('test_2.wav');
Wp = [1100 2200]/Fs;
Ws = [1000 2500]/Fs;
Rp = 3; Rs = 40;
[n,Wn] = buttord(Wp,Ws,Rp,Rs)
[b,a] = butter(n,Wn);
z=filter(b,a,y);
gain = 20;
filtered = gain .* z;
Что мне удалось сделать, чтобы отделить определенную полосу через полосовой фильтр и усилить его с помощью масштабирования, теперь я хочу добавить его обратно в wav-файл, есть ли встроенная команда, через которую я могу получить точные показатели отфильтрованного выхода (find() не работает)
Я рекомендую использовать преобразование Фурье по этому вопросу. В частотной области вы можете напрямую выбирать то, что хотите усилить. Ищите (быстрое преобразование Фурье) fft в вашей помощи в matlab. Cheers – mrcl
на самом деле я должен применять различные фильтры полосового фильтра для этой задачи – johnny
В частотной области вы можете применить любой фильтр, который вы хотите. это просто вопрос выбора функции, которая изменяется от 0 до 1 и умножается на ваши спектры. Затем вы сохраняете частоты при их умножении на 1 и подавляете их при умножении на 0. Очевидно, вы можете использовать значения между ними для ослабления разных частот, вместо полного их подавления – mrcl