реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Создание фильтра в MATLAB и его реальное применение
BooZe
сообщение Aug 14 2013, 09:06
Сообщение #16





Группа: Новичок
Сообщений: 7
Регистрация: 29-11-10
Из: Минск
Пользователь №: 61 249




Вот результаты моделирования Вашего фильтра с нормированными коэффициентами. Виден спад АЧХ из-за нормирования коэффициентов фильтра.
Лучше пользоваться стандартной функцией fdatool для нормировки коэффициентов.

На скриншоте виден спад из-за квантования (штриховая - необходимая Вам АЧХ).
Кроме того фильтр нестабилен, что тоже не очень хорошо.

Сообщение отредактировал BooZe - Aug 14 2013, 09:11
Go to the top of the page
 
+Quote Post
sidy
сообщение Aug 26 2013, 16:30
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Задам еще один вопрос. Допустим я фильтрую входной синусоидальный сигнал. В отсутствии входного сигнала вследствие шума АЦП на входе фильтра появляются отсчеты, которые не являются полезным сигналом, но также фильтруются и портят алгоритм (поскольку с помощью фильтра я определяю переход синусоиды через 0). Как в таком случае обычно поступают: перестают накладывать фильтр, или подают на него 0, или же существуют какие-либо другие варианты?
Go to the top of the page
 
+Quote Post
bullit
сообщение Aug 26 2013, 18:01
Сообщение #18


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



Помоему из этого:
Цитата
...также фильтруются и портят алгоритм (поскольку с помощью фильтра я определяю переход синусоиды через 0).
следует что Вы или не тот алгоритм взяли, или фильтр не тот или Вам вообще фильтрация не нужна.

И давайте лучше сначала (поскольку речь вые шла только про фильтры), Вы что хотите из сигнала "выудить"?
Go to the top of the page
 
+Quote Post
sidy
сообщение Aug 26 2013, 18:49
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Выудить хочу переход через ноль, поскольку в исходном сигнале может присутсвовать достаточно сильная помеха именно в переходах, вплоть до такой как на рис.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
bullit
сообщение Aug 27 2013, 15:38
Сообщение #20


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



Цитата
но также фильтруются и портят алгоритм

Каким образом, покажите. И давайте больше информации, тут нет телепатов)
Верхний и нижний график это после фильтра или как?
Покажите лучше исходный сигнал, со всеми вариантами шума.
И.. попробуйте загнать данные сначала в матлаб, там его как следует обработать, ну и потом выбирайте алгоритм.

ну и Вы не до конца ответили на вопрос... зачем вам переход через ноль? Вы, надеюсь, в курсе, что выход фильтра имеет "запаздывание" по выходу?
Может Вам просто полосовой фильтр на основную частоту попробовать?
Go to the top of the page
 
+Quote Post
_VGA_
сообщение Nov 11 2013, 18:30
Сообщение #21





Группа: Новичок
Сообщений: 3
Регистрация: 9-04-13
Пользователь №: 76 428



помогите разобраться
делаю фильтр так:
-------
BIQUADS=3;
fs=48000;
fc=450;
fn=fc/fs;
[b,a]=butter(2*BIQUADS,fn);
[sos,g]=tf2sos(b,a);
sos=sos';
d=[0,0];
fp2=fopen('low.dat','w');
for i=1:BIQUADS,
j=(i-1)*6;
sos(j+4:j+6)=-sos(j+4:j+6);
fprintf(fp2,'%2.20e,\n',sos(j+1));
fprintf(fp2,'%2.20e,\n',sos(j+2));
fprintf(fp2,'%2.20e,\n',sos(j+5));
fprintf(fp2,'%2.20e,\n',sos(j+3));
fprintf(fp2,'%2.20e,\n',sos(j+6));
fprintf(fp2,'%2.20e,\n',d(1));
fprintf(fp2,'%2.20e,\n',d(2));
end
fprintf(fp2,'%2.20e\n',g);
fclose(fp2);
----------
дальше эти коэф загружаю в adsp
хочу посмотреть график:
freqz(b,a,2048,2000);
выводится график, но частота среза раз в 10 ниже (примерно 45гц)
пока два вопроса
1 правильно ли я расчитваю коэфф
2 почему неправильно рисуется график
спс
Go to the top of the page
 
+Quote Post
SemperAnte
сообщение Nov 12 2013, 09:12
Сообщение #22


Частый гость
**

Группа: Свой
Сообщений: 89
Регистрация: 24-10-10
Из: Санкт-Петербург
Пользователь №: 60 386



fn - это же нормализованная частота?
Она должна считаться как f/(Fs/2).

АЧХ вывожу командой:

Код
h = fvtool(b,a);
set(h, 'Fs', fs);


Вроде, совпадает с заданной.

Сообщение отредактировал SemperAnte - Nov 12 2013, 09:22
Go to the top of the page
 
+Quote Post
_VGA_
сообщение Nov 12 2013, 11:20
Сообщение #23





Группа: Новичок
Сообщений: 3
Регистрация: 9-04-13
Пользователь №: 76 428



fs - частота квантования (48 кгц)
fc - частота среза фильтра (450 гц)
fn =2*fc/fs - я правильно понял?
Go to the top of the page
 
+Quote Post
SemperAnte
сообщение Nov 12 2013, 11:39
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 89
Регистрация: 24-10-10
Из: Санкт-Петербург
Пользователь №: 60 386



Цитата(_VGA_ @ Nov 12 2013, 15:20) *
fs - частота квантования (48 кгц)
fc - частота среза фильтра (450 гц)
fn =2*fc/fs - я правильно понял?

Да, так. Отношение частоты среза к частоте Найквиста.

В Matlab примере на функцию butter это показано (по крайней мере, в моей 2012b версии).
Go to the top of the page
 
+Quote Post
_VGA_
сообщение Nov 12 2013, 12:54
Сообщение #25





Группа: Новичок
Сообщений: 3
Регистрация: 9-04-13
Пользователь №: 76 428



там хелп есть? ну я и бестолочь sad.gif
Спасибо получилось, красиво;
теперь я хочу фнч и фвч с одинаковой частотой среза вывести на график
(результирующую)
это возможно?
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th August 2025 - 12:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016