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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как построить АЧХ и ФЧХ (ГВЗ) КИХ фильтра?, по известным коэффициентам
_Ivana
сообщение Jul 15 2012, 17:22
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Есть рассчитанные коэффициенты КИХ-фильтра. Как по ним определить и построить его графики АЧХ и ФЧХ? Можно ссылку если это где-то разжевано.

ЗЫ матлаб навскидку скачать не удалось, есть GNU Octave (с интерфейсом командной строки), GNU Plot.
Go to the top of the page
 
+Quote Post
Самурай
сообщение Jul 15 2012, 18:47
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(_Ivana @ Jul 15 2012, 20:22) *
Есть рассчитанные коэффициенты КИХ-фильтра. Как по ним определить и построить его графики АЧХ и ФЧХ? Можно ссылку если это где-то разжевано.

ЗЫ матлаб навскидку скачать не удалось, есть GNU Octave (с интерфейсом командной строки), GNU Plot.


GNU Octave:
[h, w] = freqz (b, a, n, "whole")

Еще решение в лоб (для MatLab-а, для Octave думаю, что будет сильно похоже):

h = [1 1 1 1 1 1]; - коэффициенты фильтра
abs(fft(h,1000)) - АЧХ (разрешение по частоте - Fd/1006)
angle(fft(h,1000)) - ФЧХ

Совсем дубовый вариант исходя из определения z-преобразования (z = exp(j*w*Td)):

h = [1 1 1 1 1 1]; n = [0:length(h)-1];
for i = 1:1000 ha(i) = sum(h.*(exp(-1j*2*pi*i.*n/1000))); end;
АЧХ = abs(ha);
ФЧХ = angle(ha);

Сообщение отредактировал Самурай - Jul 15 2012, 18:48
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 15 2012, 19:15
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Спасибо! Второй вариант мне на данном этапе моего недоразвития кажется наиболее понятным sm.gif Октаву скачал всего пару часов назад, многое в новинку.
Что-то строит, но имхо далеко от моих ожиданий.
Только что прочитал теорию, что комплексный коэффициент передачи есть БПФ от импульсной характеристики, которая в случае КИХ фильтра совпадает с его коэффициентами (если ничего не путаю). Осталось только понять откуда брать аргумент (или он будет равен 2*Пи/1000) да и чтобы картинки были похожи на правду - хотя правду я только предполагаю (широкополосный ФНЧ интерполирующего фильтра).

Еще раз спасибо, попытаюсь покрутить Ваши предложенные варианты!
UPD: о, а ниче так! Только аргумент не нормирован и децибеллов нет и полоса затухания не видна... Буду разбираться дальше. Если кто чего подскажет, буду признателен.

UPD: если вдруг кто из любопытства захочет построить АЧХ - коэффициенты ниже (их четное число и они симметричны, округлены до Е-7). У меня пока не получается увидеть полосу затухания (или её действительно нет и у меня получился режекторный фильтр?)...
CODE
h = [
-0.0000002,
0.0000003,
-0.0000003,
0.0000004,
-0.0000006,
0.0000007,
-0.0000009,
0.0000012,
-0.0000015,
0.0000019,
-0.0000024,
0.000003,
-0.0000038,
0.0000047,
-0.0000059,
0.0000073,
-0.0000091,
0.0000113,
-0.0000139,
0.0000171,
-0.000021,
0.0000257,
-0.0000314,
0.0000382,
-0.0000463,
0.000056,
-0.0000676,
0.0000813,
-0.0000976,
0.0001167,
-0.0001393,
0.0001657,
-0.0001966,
0.0002327,
-0.0002747,
0.0003233,
-0.0003796,
0.0004445,
-0.0005191,
0.0006048,
-0.0007028,
0.0008146,
-0.0009419,
0.0010865,
-0.0012502,
0.0014353,
-0.0016441,
0.0018789,
-0.0021426,
0.0024381,
-0.0027687,
0.0031379,
-0.0035496,
0.004008,
-0.004518,
0.0050847,
-0.0057141,
0.006413,
-0.0071891,
0.0080514,
-0.0090104,
0.0100786,
-0.0112712,
0.0126067,
-0.0141082,
0.0158051,
-0.0177352,
0.0199482,
-0.0225115,
0.0255178,
-0.0290993,
0.0334505,
-0.0388703,
0.0458423,
-0.0552027,
0.0685324,
-0.0892215,
0.1260866,
-0.2114619,
0.6363711,
0.6363711,
-0.2114619,
0.1260866,
-0.0892215,
0.0685324,
-0.0552027,
0.0458423,
-0.0388703,
0.0334505,
-0.0290993,
0.0255178,
-0.0225115,
0.0199482,
-0.0177352,
0.0158051,
-0.0141082,
0.0126067,
-0.0112712,
0.0100786,
-0.0090104,
0.0080514,
-0.0071891,
0.006413,
-0.0057141,
0.0050847,
-0.004518,
0.004008,
-0.0035496,
0.0031379,
-0.0027687,
0.0024381,
-0.0021426,
0.0018789,
-0.0016441,
0.0014353,
-0.0012502,
0.0010865,
-0.0009419,
0.0008146,
-0.0007028,
0.0006048,
-0.0005191,
0.0004445,
-0.0003796,
0.0003233,
-0.0002747,
0.0002327,
-0.0001966,
0.0001657,
-0.0001393,
0.0001167,
-0.0000976,
0.0000813,
-0.0000676,
0.000056,
-0.0000463,
0.0000382,
-0.0000314,
0.0000257,
-0.000021,
0.0000171,
-0.0000139,
0.0000113,
-0.0000091,
0.0000073,
-0.0000059,
0.0000047,
-0.0000038,
0.000003,
-0.0000024,
0.0000019,
-0.0000015,
0.0000012,
-0.0000009,
0.0000007,
-0.0000006,
0.0000004,
-0.0000003,
0.0000003,
-0.0000002];


Сообщение отредактировал _Ivana - Jul 15 2012, 20:36
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ToR_TDA
сообщение Jul 16 2012, 09:24
Сообщение #4


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

Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796



Цитата(_Ivana @ Jul 15 2012, 23:15) *
UPD: если вдруг кто из любопытства захочет построить АЧХ - коэффициенты ниже

ЧХ и ИХ Вашего фильтра ниже. Совет: пользуйтесь Matlab-ом.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 16 2012, 11:34
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Спасибо, я вчера ещё немного подумал и понял что не надо ожидать от этого фильтра полосы затухания, ведь это апсемплирующий фильтр который применяется к исходному сигналу НЕ разбавленному нулями, а значит частоты там могут быть только до Fd/2 и во всей этой полосе от 0 до Fd/2 мне нужна горизонтальная единичная АЧХ, что в принципе и получилось. А ФЧХ линейна по определению - коэффициенты симметричны.

Цитата
Совет: пользуйтесь Matlab-ом

По многочисленным рекомендациям хотел найти и скачать себе Матлаб. Ссылок в инете море, объем больше гига, и с бесплатных файлообменников предлагает качать около нескольких часов с отсутствием гарантии что таблетка сработает и он запустится. В результате остановился на бесплатном и менее объемном GNU Octave. Хотя если появится какая-нибудь возможность скачать Матлаб - обязательно скачаю.
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 16 2012, 17:07
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Вижу среди читающих Alexey Lukin, вспоминаю http://rus.625-net.ru/audioproducer/2007/03/techno2.htm и думаю - как мой фильтр будет смотреться на фоне остальных перечисленных sm.gif Хотя у меня только апсемплер в 2 раза, но можно несколько раз удвоить частоту дискретизации, окна для последующих раз могу пересчитать. Кстати, окно рассчитывалось не по синку. Выложенное окно (80 пар симметричных коэффициентов) дает точность Е-6 от 2.19 частоты дискретизации и далее. По другим исходным характеристикам могу пересчитать фильтр.
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 20 2012, 12:39
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Решил посмотреть как соотносятся рассчитанные коэффициенты моего интерполирующего фильтра с синком, выявить закономерности, посмотреть какое окно получается у меня, если бы я рассчитывал коэффициенты фильтра как синк*окно (я их рассчитываю вообще без синка и окон). Графики получившегося окна довольно красивые, слева абсолютное значение, справа логарифм. Плюс при моем расчете коэффициентов у меня есть один параметр, определяющий соотношение между абсолютной точностью интерполяции и приближением к частоте Найквиста - вид окна зависит от этого параметра. Теперь буду пытаться понять что за параметрическое окно у меня получается и на какое из известных оно похоже sm.gif

UPD кстати, при смещении фазы от 0.5 мои коэффициенты фильтра получаются с точностью до вышеприведенного окна зеркальными коэффициентами синка (! если ничего не путаю), то есть инвертированными относительно середины. При фазе 0.5 у синка коэффициенты симметричные и их инвертирование ничего не меняет, а при других фазах этот факт меня немного удивил.

Сообщение отредактировал _Ivana - Jul 20 2012, 13:25
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 20 2012, 14:17
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



График логарифма (десятичного) коэффициентов окна при других значениях параметра "точность/приближение к Найквисту". Желающие могут проявить креатив и написать аналитическую формулу, аппроксимирующую эти графики и выражающую логарифм окна при различных параметрах. И у нас получится окно w = 10^f(i, par) (если конечно какие-нибудь Зингельшухеры ещё его не вывели, как обычно sm.gif )
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ToR_TDA
сообщение Jul 20 2012, 14:30
Сообщение #9


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

Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796



Цитата(_Ivana @ Jul 20 2012, 18:17) *
График логарифма (десятичного) коэффициентов окна при других значениях параметра "точность/приближение к Найквисту". Желающие могут проявить креатив и написать аналитическую формулу, аппроксимирующую эти графики и выражающую логарифм окна при различных параметрах. И у нас получится окно w = 10^f(i, par) (если конечно какие-нибудь Зингельшухеры ещё его не вывели, как обычно sm.gif )

А что вы тогда рисуете, если не имеете аналитического описания коэффициентов окна?
Из параметрических окон мне известны Гаусса и Кайзера. Почитайте для начала какие окна существуют. раз, два.
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 20 2012, 14:38
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Цитата
А что вы тогда рисуете, если не имеете аналитического описания коэффициентов окна?

sm.gif ну я же писал выше. Это окно я экспериментально получаю (в результате расчетов) - как отношение моих рассчитанных коэффициентов фильтра к синку. И теперь я хочу найти (и найду sm.gif ) его аналитическое описание. И может оно совпадет с каким-то уже известным, что весьма вероятно. Но я буду знать как оно получилось sm.gif
Да и вообще, вы единственный кто поддерживает мои наивные попытки многими считаемого сомнительным креатива на этом форуме. Но мне это нравится, я называю это творчеством sm.gif Присоединяйтесь, барон! (С) sm.gif

Цитата
Из параметрических окон мне известны Гаусса и Кайзера. Почитайте для начала какие окна существуют. раз, два.

Спасибо, почитаю. Но аналитическую формулу своего полученного окна все равно выведу, и тогда уже будет что сравнивать с известным.
ЗЫ кстати, хорошая идея - посмотреть нормированные спектры получающегося окна при различных параметрах. Надо будет напрячься в октаве как-то...

Сообщение отредактировал _Ivana - Jul 20 2012, 14:46
Go to the top of the page
 
+Quote Post
ToR_TDA
сообщение Jul 20 2012, 15:04
Сообщение #11


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

Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796



Цитата(_Ivana @ Jul 20 2012, 18:38) *
ЗЫ кстати, хорошая идея - посмотреть нормированные спектры получающегося окна при различных параметрах. Надо будет напрячься в октаве как-то...

И определитесь с тем, что Вы хотите получить от окна. В моем осциллографе, например, заложены 3 окна. 1 - rectangular - best for transient analysis, 2 - Hanning - best for frequency resolution, 3 - Flattop - best for magnitude accuracy. По информации из подсказок.
P.S. Кстати про БПФ, окна и осциллографы статья.
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 20 2012, 18:17
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



160 значений окна при определенном параметре. АЧХ после центрального лепестка -180дБ, не знаю хорошо или плохо. Желающие могут проанализировать а матлабе.
CODE
h = [
0.000000000549916,
0.000000000943069,
0.000000001605766,
0.00000000271468,
0.000000004556784,
0.000000007594641,
0.000000012568122,
0.000000020651584,
0.00000003369469,
0.000000054588341,
0.000000087816027,
0.000000140277549,
0.000000222509216,
0.000000350475889,
0.000000548180237,
0.000000851428878,
0.000001313220812,
0.000002011388839,
0.000003059339326,
0.000004621010446,
0.000006931515669,
0.000010325369814,
0.000015274720634,
0.000022440638956,
0.000032741260117,
0.00004744141772,
0.000068269357207,
0.000097567138033,
0.000138482389466,
0.000195210115272,
0.00027329416138,
0.000379998654668,
0.000524760046923,
0.000719730182933,
0.000980419855492,
0.001326450392725,
0.001782417715224,
0.002378868779462,
0.003153384196031,
0.004151752937631,
0.005429215379979,
0.007051739516525,
0.009097282277044,
0.011656973868303,
0.014836148559658,
0.018755131198059,
0.023549676015608,
0.029370944244185,
0.036384901078617,
0.044771012107889,
0.054720125909643,
0.066431444370009,
0.080108506446187,
0.095954145083895,
0.114164420793247,
0.134921588210201,
0.158386212246758,
0.184688615724559,
0.213919907421971,
0.246122904238181,
0.28128331912935,
0.319321632748266,
0.360086096503364,
0.40334732364511,
0.44879490940794,
0.496036478819302,
0.544599490731681,
0.593936029961729,
0.643430699125206,
0.692411582795637,
0.74016410574706,
0.785947452494301,
0.829013066329605,
0.868624612161054,
0.904078677963546,
0.934725412809768,
0.959988261804627,
0.979381964063306,
0.992528030695028,
0.999167014177938,
0.999167014177938,
0.992528030695028,
0.979381964063306,
0.959988261804627,
0.934725412809768,
0.904078677963546,
0.868624612161054,
0.829013066329605,
0.785947452494301,
0.74016410574706,
0.692411582795637,
0.643430699125206,
0.593936029961729,
0.544599490731681,
0.496036478819302,
0.44879490940794,
0.40334732364511,
0.360086096503364,
0.319321632748266,
0.28128331912935,
0.246122904238181,
0.213919907421971,
0.184688615724559,
0.158386212246758,
0.134921588210201,
0.114164420793247,
0.095954145083895,
0.080108506446187,
0.066431444370009,
0.054720125909643,
0.044771012107889,
0.036384901078617,
0.029370944244185,
0.023549676015608,
0.018755131198059,
0.014836148559658,
0.011656973868303,
0.009097282277044,
0.007051739516525,
0.005429215379979,
0.004151752937631,
0.003153384196031,
0.002378868779462,
0.001782417715224,
0.001326450392725,
0.000980419855492,
0.000719730182933,
0.000524760046923,
0.000379998654668,
0.00027329416138,
0.000195210115272,
0.000138482389466,
0.000097567138033,
0.000068269357207,
0.00004744141772,
0.000032741260117,
0.000022440638956,
0.000015274720634,
0.000010325369814,
0.000006931515669,
0.000004621010446,
0.000003059339326,
0.000002011388839,
0.000001313220812,
0.000000851428878,
0.000000548180237,
0.000000350475889,
0.000000222509216,
0.000000140277549,
0.000000087816027,
0.000000054588341,
0.00000003369469,
0.000000020651584,
0.000000012568122,
0.000000007594641,
0.000000004556784,
0.00000000271468,
0.000000001605766,
0.000000000943069,
0.000000000549916];


UPD добавил картинку из Октавы. (офф - быстро не смог, какая-то авария с компом, антивирус пытается справиться, жрет 100% проца, остальное работает в час по чайной ложке)

Насчет "определиться что хочу от окна", сначала имхо стОит его проанализировать по всякому, посмотреть возможные плюсы и минусы, а потом уже думать как применять и чего хотеть.

Сообщение отредактировал _Ivana - Jul 20 2012, 18:52
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ToR_TDA
сообщение Jul 20 2012, 18:51
Сообщение #13


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

Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796



Цитата(_Ivana @ Jul 20 2012, 22:17) *
160 значений окна при определенном параметре. АЧХ после центрального лепестка -180дБ, не знаю хорошо или плохо. Желающие могут проанализировать а матлабе.

Может сократите количество тапов в фильтре, а то тяжело со 160 значениями оперировать, да и не нужно это для сравнения. Можно попробовать сравнить например ваше окно и Гаусса. К вопросу о -180Дб: подавление боковых лепестков будет неизбежно приводить к расширению основного. Можно хоть 360Дб окном Гаусса получить, но основной лепесток расползется. Тут нужно искать компромисс.
P.S. Что-то я не понял, по вашим графикам полоса пропускания вашего фильтра равна 0. Может все же сделать 0.5. Фильтр с окном Гаусса ниже.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Jul 20 2012, 19:04
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Мой параметр скорее всего и задает этот компромисс. Да и вообще окно на гауссово похоже сильно, только показатель степени нелинеен.
Сколько значений оставить? Учитывая то что они будут симметричные относительно центра. И наверное кстати на данный момент я могу не смочь красиво рассчитать малое количество значений - я ещё не получил аналитический вид окна, а рассчитываю его через расчет коэффициентов фильтра, а там при малых их количествах может вылезти большая погрешность и отклонения от того окна, которое я пытаюсь поймать.
А вот те же 160 могу с другим параметром рассчитать - сравнить ширину центрального лепестка и степень подавления. Сейчас проверю в Октаве. Слева - почти максимальное подавление для моих 160 точек. Справа - подавление хуже, центральный лепесток уже.

Насчет полосы 0 - я не фильтр считаю а показываю (если я правильно понимаю) АЧХ самого окна - то что у Вас на рисунке справа.

Сообщение отредактировал _Ivana - Jul 20 2012, 19:24
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Самурай
сообщение Jul 20 2012, 19:25
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Вот до кучи еще одно сравнение, длина окон одинаковаяsm.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 Текстовая версия Сейчас: 18th July 2025 - 15:10
Рейтинг@Mail.ru


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