|
Как построить АЧХ и ФЧХ (ГВЗ) КИХ фильтра?, по известным коэффициентам |
|
|
|
Jul 15 2012, 18:47
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jul 15 2012, 19:15
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Спасибо! Второй вариант мне на данном этапе моего недоразвития кажется наиболее понятным  Октаву скачал всего пару часов назад, многое в новинку. Что-то строит, но имхо далеко от моих ожиданий. Только что прочитал теорию, что комплексный коэффициент передачи есть БПФ от импульсной характеристики, которая в случае КИХ фильтра совпадает с его коэффициентами (если ничего не путаю). Осталось только понять откуда брать аргумент (или он будет равен 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
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 16 2012, 09:24
|
Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796

|
Цитата(_Ivana @ Jul 15 2012, 23:15)  UPD: если вдруг кто из любопытства захочет построить АЧХ - коэффициенты ниже ЧХ и ИХ Вашего фильтра ниже. Совет: пользуйтесь Matlab-ом.
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 16 2012, 11:34
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Спасибо, я вчера ещё немного подумал и понял что не надо ожидать от этого фильтра полосы затухания, ведь это апсемплирующий фильтр который применяется к исходному сигналу НЕ разбавленному нулями, а значит частоты там могут быть только до Fd/2 и во всей этой полосе от 0 до Fd/2 мне нужна горизонтальная единичная АЧХ, что в принципе и получилось. А ФЧХ линейна по определению - коэффициенты симметричны. Цитата Совет: пользуйтесь Matlab-ом По многочисленным рекомендациям хотел найти и скачать себе Матлаб. Ссылок в инете море, объем больше гига, и с бесплатных файлообменников предлагает качать около нескольких часов с отсутствием гарантии что таблетка сработает и он запустится. В результате остановился на бесплатном и менее объемном GNU Octave. Хотя если появится какая-нибудь возможность скачать Матлаб - обязательно скачаю.
|
|
|
|
|
Jul 16 2012, 17:07
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Вижу среди читающих Alexey Lukin, вспоминаю http://rus.625-net.ru/audioproducer/2007/03/techno2.htm и думаю - как мой фильтр будет смотреться на фоне остальных перечисленных  Хотя у меня только апсемплер в 2 раза, но можно несколько раз удвоить частоту дискретизации, окна для последующих раз могу пересчитать. Кстати, окно рассчитывалось не по синку. Выложенное окно (80 пар симметричных коэффициентов) дает точность Е-6 от 2.19 частоты дискретизации и далее. По другим исходным характеристикам могу пересчитать фильтр.
|
|
|
|
|
Jul 20 2012, 12:39
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Решил посмотреть как соотносятся рассчитанные коэффициенты моего интерполирующего фильтра с синком, выявить закономерности, посмотреть какое окно получается у меня, если бы я рассчитывал коэффициенты фильтра как синк*окно (я их рассчитываю вообще без синка и окон). Графики получившегося окна довольно красивые, слева абсолютное значение, справа логарифм. Плюс при моем расчете коэффициентов у меня есть один параметр, определяющий соотношение между абсолютной точностью интерполяции и приближением к частоте Найквиста - вид окна зависит от этого параметра. Теперь буду пытаться понять что за параметрическое окно у меня получается и на какое из известных оно похоже  UPD кстати, при смещении фазы от 0.5 мои коэффициенты фильтра получаются с точностью до вышеприведенного окна зеркальными коэффициентами синка (! если ничего не путаю), то есть инвертированными относительно середины. При фазе 0.5 у синка коэффициенты симметричные и их инвертирование ничего не меняет, а при других фазах этот факт меня немного удивил.
Сообщение отредактировал _Ivana - Jul 20 2012, 13:25
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 20 2012, 14:17
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
График логарифма (десятичного) коэффициентов окна при других значениях параметра "точность/приближение к Найквисту". Желающие могут проявить креатив и написать аналитическую формулу, аппроксимирующую эти графики и выражающую логарифм окна при различных параметрах. И у нас получится окно w = 10^f(i, par) (если конечно какие-нибудь Зингельшухеры ещё его не вывели, как обычно  )
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 20 2012, 14:30
|
Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796

|
Цитата(_Ivana @ Jul 20 2012, 18:17)  График логарифма (десятичного) коэффициентов окна при других значениях параметра "точность/приближение к Найквисту". Желающие могут проявить креатив и написать аналитическую формулу, аппроксимирующую эти графики и выражающую логарифм окна при различных параметрах. И у нас получится окно w = 10^f(i, par) (если конечно какие-нибудь Зингельшухеры ещё его не вывели, как обычно  ) А что вы тогда рисуете, если не имеете аналитического описания коэффициентов окна? Из параметрических окон мне известны Гаусса и Кайзера. Почитайте для начала какие окна существуют. раз, два.
|
|
|
|
|
Jul 20 2012, 14:38
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Цитата А что вы тогда рисуете, если не имеете аналитического описания коэффициентов окна?  ну я же писал выше. Это окно я экспериментально получаю (в результате расчетов) - как отношение моих рассчитанных коэффициентов фильтра к синку. И теперь я хочу найти (и найду  ) его аналитическое описание. И может оно совпадет с каким-то уже известным, что весьма вероятно. Но я буду знать как оно получилось  Да и вообще, вы единственный кто поддерживает мои наивные попытки многими считаемого сомнительным креатива на этом форуме. Но мне это нравится, я называю это творчеством  Присоединяйтесь, барон! (С)  Цитата Из параметрических окон мне известны Гаусса и Кайзера. Почитайте для начала какие окна существуют. раз, два. Спасибо, почитаю. Но аналитическую формулу своего полученного окна все равно выведу, и тогда уже будет что сравнивать с известным. ЗЫ кстати, хорошая идея - посмотреть нормированные спектры получающегося окна при различных параметрах. Надо будет напрячься в октаве как-то...
Сообщение отредактировал _Ivana - Jul 20 2012, 14:46
|
|
|
|
|
Jul 20 2012, 15:04
|
Частый гость
 
Группа: Свой
Сообщений: 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. Кстати про БПФ, окна и осциллографы статья.
|
|
|
|
|
Jul 20 2012, 18:17
|
Местный
  
Группа: Свой
Сообщений: 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
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 20 2012, 18:51
|
Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796

|
Цитата(_Ivana @ Jul 20 2012, 22:17)  160 значений окна при определенном параметре. АЧХ после центрального лепестка -180дБ, не знаю хорошо или плохо. Желающие могут проанализировать а матлабе. Может сократите количество тапов в фильтре, а то тяжело со 160 значениями оперировать, да и не нужно это для сравнения. Можно попробовать сравнить например ваше окно и Гаусса. К вопросу о -180Дб: подавление боковых лепестков будет неизбежно приводить к расширению основного. Можно хоть 360Дб окном Гаусса получить, но основной лепесток расползется. Тут нужно искать компромисс. P.S. Что-то я не понял, по вашим графикам полоса пропускания вашего фильтра равна 0. Может все же сделать 0.5. Фильтр с окном Гаусса ниже.
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 20 2012, 19:04
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Мой параметр скорее всего и задает этот компромисс. Да и вообще окно на гауссово похоже сильно, только показатель степени нелинеен. Сколько значений оставить? Учитывая то что они будут симметричные относительно центра. И наверное кстати на данный момент я могу не смочь красиво рассчитать малое количество значений - я ещё не получил аналитический вид окна, а рассчитываю его через расчет коэффициентов фильтра, а там при малых их количествах может вылезти большая погрешность и отклонения от того окна, которое я пытаюсь поймать. А вот те же 160 могу с другим параметром рассчитать - сравнить ширину центрального лепестка и степень подавления. Сейчас проверю в Октаве. Слева - почти максимальное подавление для моих 160 точек. Справа - подавление хуже, центральный лепесток уже. Насчет полосы 0 - я не фильтр считаю а показываю (если я правильно понимаю) АЧХ самого окна - то что у Вас на рисунке справа.
Сообщение отредактировал _Ivana - Jul 20 2012, 19:24
Эскизы прикрепленных изображений
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|