2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 ФНЧ цифровая фильтрация на языке Cи
Сообщение05.11.2014, 18:44 
Аватара пользователя


20/11/12

121
Нашёл кучу примеров в интернете, но не удалось разобраться. Может кто-то подскажет или объяснит как она работает на примере простого кода?

 Профиль  
                  
 
 Re: ФНЧ цифровая фильтрация на языке Cи
Сообщение05.11.2014, 19:38 


03/11/14
5
Какие фильтры Вас интересуют: тип фильтра, КИХ, БИХ? Интересует расчет фильтров или сам алгоритм фильтрации?
Для каких задач? Уточните вопрос.

 Профиль  
                  
 
 Re: ФНЧ цифровая фильтрация на языке Cи
Сообщение06.11.2014, 11:19 
Аватара пользователя


20/11/12

121
Скорее КИХ. Мне нужно фильтровать отсчёты сигнала типа float, поступающие с термодатчика микроконтроллера MSP430. Отсчёты я получаю поочередно в коде на Си. Скорее всего, нужно понять как получить коэффициенты и как работает фильтр в коде.

 Профиль  
                  
 
 Re: ФНЧ цифровая фильтрация на языке Cи
Сообщение06.11.2014, 18:15 
Аватара пользователя


01/04/14
227
Санкт-Петербург
Alex9 в сообщении #927350 писал(а):
нужно понять как получить коэффициенты

В Матлабе. В программе FdaTool проектируете фильтр с нужными параметрами, и делаете экспорт коэффициентов.

Alex9 в сообщении #927350 писал(а):
как работает фильтр в коде

Лайонса читали уже?

 Профиль  
                  
 
 Re: ФНЧ цифровая фильтрация на языке Cи
Сообщение06.11.2014, 18:39 
Аватара пользователя


20/11/12

121
Нет, если можно, то поделитесь ссылкой.

 Профиль  
                  
 
 Re: ФНЧ цифровая фильтрация на языке Cи
Сообщение06.11.2014, 20:22 
Аватара пользователя


01/04/14
227
Санкт-Петербург
http://rutracker.org/forum/viewtopic.php?t=1729964

 Профиль  
                  
 
 Re: ФНЧ цифровая фильтрация на языке Cи
Сообщение11.11.2014, 21:55 


03/11/14
5
Возможно БИХ-фильтр будет эффективнее в вычислительном плане.
Фильтр можно рассчитать в Matlab. К примеру фильтр Баттерворта:
Код:
close all;
clear all;
% Порядок фильтра
order = 2;

% Нормированная частота среза
% Wn = Fd/(2*Fn), где Fd - частота дискретизации,Fn-частота среза в Гц
Wn = 0.2;

% Расчет фильтр
[b,a] = butter(order,Wn);
%[b,a] = besself(order,Wn);
b
a

% Вывод АЧХ
[h,w]=freqz(b,a);
figure('Name', 'Response');
subplot(211);
plot(w/(pi), abs(h));
subplot(212);
plot(w/(pi), unwrap(angle(h)));

Фильтр Бесселя имеет линейную ФЧХ, поэтому для некоторых задач он будет эффективнее и вносить меньше искажений.

Если Вам просто нужно сгладить сигнал - воспользуйтесь алгоритмом простого скользящего среднего: это просто скользящее усреднение по данным.

Так же для устранения шума подойдет и инерционное звено первого порядка: y[k] = y[k - 1] + K*( x[k] - y[k-1] );
Если вам надо фильтровать сигнал с датчика используйте выраженние
filtered_data += K*(in_data - filtered_data);
где K - определяет постоянную времени и подбирается в зависимости от условий и полосы пропускания.

Полезный ресурс http://dsplib.ru/

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group