Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 11.12.2015
Сообщений: 15
1

Цифровая фильтрация сигнала

08.06.2019, 15:47. Просмотров 2540. Ответов 5

Т.З. Записан сердечный ритм, файл в wave формате, нужно оставить сигнал в полосе частот от 2 до 50 Гц, использовать программные фильтры
Мое решение в лоб, читаем один аудиокадр, т.к. звук стерео, то делим на левый и правый канал, затем применяем БПФ к каждому из них, получаем частоты, собираем это все в массив, фильтруем до заданной полосы частот.
Подскажите, правильно ли я рассуждаю и как потом из полученных частот собрать новый wave файл?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2019, 15:47
Ответы с готовыми решениями:

Цифровая фильтрация
Суть задания, нарисовать график функции sin(x) в которой надо самому же поменять точки на другие,...

Цифровая фильтрация
Добрый вечер. Делаю дипломную по цифровым фильтрам и пытаюсь реализовать вот такой: //...

цифровая фильтрация?
Есть у меня АЦП в stm32, и считываю я показания терморезистора, и вижу я на выходе температуру с...

Цифровая фильтрация
Доброго времени суток! с цифровой обработкой сигналов только начинаю разбираться, есть практическая...

5
954 / 893 / 133
Регистрация: 19.02.2010
Сообщений: 2,814
11.06.2019, 15:33 2
Цитата Сообщение от Владислав56 Посмотреть сообщение
и как потом из полученных частот собрать новый wave файл?
Если бы на кадры Вы сигнал не делили - то обратным преобразованием Фурье. Но при покадровой обработке такой подход приведёт к негладкой сшивке на границах кадров.
Поэтому, видимо, лучше взять обычный цифровой КИХ-фильтр. Но там частоты рядом с границей полосы пропускания всё равно будут пролезать - ибо крутизна спада фильтра будет 10-20-30-... (в зависимости от порядка фильтра) децибел на октаву.
Но можно попробовать делать Фурье на отрезках длиной в 3 кадра (добавлять к текущему кадру предыдущий и следующий), обратное фурье - тоже на трёх этих кадрах, но сшивать затем только СРЕДНИЕ части=кадры. Негладкости на границах должны сильно уменьшиться.


Как вариант: поскольку до программирования пока ещё не дошли - можно попросить тутошнего модератора перекинуть тему в раздел https://www.cyberforum.ru/digi... rocessing/
Там спецы должны быть получше, чем я (я в DSP и/или электронике - чисто по верхам).
А затем с уточнённым решением вернётесь сюда, если возникнут вопросы именно по программированию=реализации данного там совета.


Ну и мой вопрос к Вашему вопросу: зачем отфильтрованный сигнал собирать обратно в файл - его кто-то будет ушами слушать?
Т.е., может, задача у Вас не совсем удачно (или не совсем окончательно) поставлена?
Может, для принятия решения (для некоторого кадра = для некоторого момента времени) проге таки хватит анализа энергии сигнала в выделенной полосе частот - а человек-контролёр пусть при необходимости слушает исходный=нефильтрованный файл?
0
Просто Лис
Эксперт Python
3669 / 2197 / 783
Регистрация: 17.05.2012
Сообщений: 6,714
Записей в блоге: 9
12.06.2019, 11:57 3
Глупый вопрос, но что мешает открыть файл в любом аудио-редакторе и отсечь ненужные частоты?

Цифровая фильтрация сигнала
0
Просто Лис
Эксперт Python
3669 / 2197 / 783
Регистрация: 17.05.2012
Сообщений: 6,714
Записей в блоге: 9
12.06.2019, 12:19 4
Python
1
2
3
from scipy.io import wavfile
 
fs, wave = wavfile.read('test.wav')
0
0 / 0 / 0
Регистрация: 11.12.2015
Сообщений: 15
15.06.2019, 14:59  [ТС] 5
Вы правы, по краям будут сильные всплески, но можно сделать первоначальную обработку это кадра (блэкмен), в начале уменьшить громкость и постепенно плавно увеличивать, а потом ближе к концу кадра - уменьшать, но все равно получается "шум" в спектре из-за постоянного увеличения и уменьшения громкости.
А если вообще не делить на кадры и полностью закинуть data из wave под fft, при это разделить на каналы, потом сделать конкатенацию при этом ещё как-нибудь нормализовать, отфильтровать получившийся массив, те частоты, которые не проходят - занулить, потом сделать обратное преобразование Фурье, так сработает?
Можно дальше не собирать в аудиофайл, это я уже решил так сделать, чтобы услышать результат фильтрации.
0
Просто Лис
Эксперт Python
3669 / 2197 / 783
Регистрация: 17.05.2012
Сообщений: 6,714
Записей в блоге: 9
15.06.2019, 15:09 6
Возьмите фильтр чебушева: https://docs.scipy.org/doc/sci... freqs.html
Цифровая фильтрация сигнала
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2019, 15:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Цифровая фильтрация на ПЛИС
Доброго времени суток! Можно ли в Quartus 2 web edition собрать схему цифрового фильтра из...

Не работает тестбенч. Цифровая фильтрация
Здравствуйте, создал в IPCoreGeneratore интерполирующий FIR filter. Коэффициенты получены в...

Цифровая обработка информационного сигнала
Итак, есть файл с результатами измерений магнитного поля Земли, представленных в виде четырех...

Как можно дать характеристики графикам [цифровая обработка сигнала]
1)ФЧХ 2)Переходная характеристика 3)Импульсная характеристика Просто описать их можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.