Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как построить АЧХ и ФЧХ (ГВЗ) КИХ фильтра?
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
_Ivana
Есть рассчитанные коэффициенты КИХ-фильтра. Как по ним определить и построить его графики АЧХ и ФЧХ? Можно ссылку если это где-то разжевано.

ЗЫ матлаб навскидку скачать не удалось, есть GNU Octave (с интерфейсом командной строки), GNU Plot.
Самурай
Цитата(_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);
_Ivana
Спасибо! Второй вариант мне на данном этапе моего недоразвития кажется наиболее понятным 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];
ToR_TDA
Цитата(_Ivana @ Jul 15 2012, 23:15) *
UPD: если вдруг кто из любопытства захочет построить АЧХ - коэффициенты ниже

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

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

По многочисленным рекомендациям хотел найти и скачать себе Матлаб. Ссылок в инете море, объем больше гига, и с бесплатных файлообменников предлагает качать около нескольких часов с отсутствием гарантии что таблетка сработает и он запустится. В результате остановился на бесплатном и менее объемном GNU Octave. Хотя если появится какая-нибудь возможность скачать Матлаб - обязательно скачаю.
_Ivana
Вижу среди читающих Alexey Lukin, вспоминаю http://rus.625-net.ru/audioproducer/2007/03/techno2.htm и думаю - как мой фильтр будет смотреться на фоне остальных перечисленных sm.gif Хотя у меня только апсемплер в 2 раза, но можно несколько раз удвоить частоту дискретизации, окна для последующих раз могу пересчитать. Кстати, окно рассчитывалось не по синку. Выложенное окно (80 пар симметричных коэффициентов) дает точность Е-6 от 2.19 частоты дискретизации и далее. По другим исходным характеристикам могу пересчитать фильтр.
_Ivana
Решил посмотреть как соотносятся рассчитанные коэффициенты моего интерполирующего фильтра с синком, выявить закономерности, посмотреть какое окно получается у меня, если бы я рассчитывал коэффициенты фильтра как синк*окно (я их рассчитываю вообще без синка и окон). Графики получившегося окна довольно красивые, слева абсолютное значение, справа логарифм. Плюс при моем расчете коэффициентов у меня есть один параметр, определяющий соотношение между абсолютной точностью интерполяции и приближением к частоте Найквиста - вид окна зависит от этого параметра. Теперь буду пытаться понять что за параметрическое окно у меня получается и на какое из известных оно похоже sm.gif

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

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

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

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

Спасибо, почитаю. Но аналитическую формулу своего полученного окна все равно выведу, и тогда уже будет что сравнивать с известным.
ЗЫ кстати, хорошая идея - посмотреть нормированные спектры получающегося окна при различных параметрах. Надо будет напрячься в октаве как-то...
ToR_TDA
Цитата(_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. Кстати про БПФ, окна и осциллографы статья.
_Ivana
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% проца, остальное работает в час по чайной ложке)

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

Может сократите количество тапов в фильтре, а то тяжело со 160 значениями оперировать, да и не нужно это для сравнения. Можно попробовать сравнить например ваше окно и Гаусса. К вопросу о -180Дб: подавление боковых лепестков будет неизбежно приводить к расширению основного. Можно хоть 360Дб окном Гаусса получить, но основной лепесток расползется. Тут нужно искать компромисс.
P.S. Что-то я не понял, по вашим графикам полоса пропускания вашего фильтра равна 0. Может все же сделать 0.5. Фильтр с окном Гаусса ниже.
_Ivana
Мой параметр скорее всего и задает этот компромисс. Да и вообще окно на гауссово похоже сильно, только показатель степени нелинеен.
Сколько значений оставить? Учитывая то что они будут симметричные относительно центра. И наверное кстати на данный момент я могу не смочь красиво рассчитать малое количество значений - я ещё не получил аналитический вид окна, а рассчитываю его через расчет коэффициентов фильтра, а там при малых их количествах может вылезти большая погрешность и отклонения от того окна, которое я пытаюсь поймать.
А вот те же 160 могу с другим параметром рассчитать - сравнить ширину центрального лепестка и степень подавления. Сейчас проверю в Октаве. Слева - почти максимальное подавление для моих 160 точек. Справа - подавление хуже, центральный лепесток уже.

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

Нажмите для просмотра прикрепленного файла
_Ivana
Самурай да, Вы с Вильгельмом меня победили!... Сильно. Спасибо. Снова революция отменяется, придется подумать над оптимальными окнами вообще и над Кайзером в частности....
UPD хотя при другом параметре я получаю примерно такое же подавление, но центральный лепесток скорее всего шире, не знаю насколько. Вот мое окно с более сильным подавлением (но не самым sm.gif ) длиной 160 (может сравните с Кайзером):
CODE
h = [
0.000000000000008,
0.000000000000018,
0.000000000000041,
0.000000000000092,
0.000000000000204,
0.000000000000449,
0.000000000000977,
0.000000000002099,
0.000000000004461,
0.000000000009372,
0.000000000019465,
0.000000000039971,
0.000000000081153,
0.000000000162916,
0.000000000323401,
0.000000000634824,
0.000000001232306,
0.000000002365667,
0.000000004491338,
0.000000008433376,
0.000000015661985,
0.000000028769177,
0.000000052270759,
0.000000093941154,
0.000000167006497,
0.00000029370108,
0.000000510959414,
0.000000879406338,
0.000001497367548,
0.000002522411104,
0.000004204018506,
0.000006932454358,
0.000011310846585,
0.00001825999416,
0.000029168562099,
0.000046105146544,
0.000072113177927,
0.000111614663926,
0.000170954105506,
0.000259119115893,
0.00038867867384,
0.000576982627626,
0.000847665835648,
0.001232495724225,
0.00177359140803,
0.002526024126589,
0.003560780997722,
0.004968035763288,
0.006860620815969,
0.009377534961473,
0.012687253183169,
0.016990532040619,
0.022522333170122,
0.029552425604727,
0.038384184980852,
0.049351094975382,
0.062810484514122,
0.079134113257905,
0.098695354737388,
0.121852924005378,
0.148931351562129,
0.180198707138708,
0.215842407451859,
0.255944275503025,
0.300456323416594,
0.349178970457123,
0.401743546654969,
0.457600938168494,
0.516018079211281,
0.576083675733229,
0.636724062652516,
0.696729471698303,
0.754790261006495,
0.809541886157225,
0.859616642002002,
0.903699546720053,
0.940585242504545,
0.969232508773719,
0.988812963496421,
0.998750782225028,
0.998750782225028,
0.988812963496421,
0.969232508773719,
0.940585242504545,
0.903699546720053,
0.859616642002002,
0.809541886157225,
0.754790261006495,
0.696729471698303,
0.636724062652516,
0.576083675733229,
0.516018079211281,
0.457600938168494,
0.401743546654969,
0.349178970457123,
0.300456323416594,
0.255944275503025,
0.215842407451859,
0.180198707138708,
0.148931351562129,
0.121852924005378,
0.098695354737388,
0.079134113257905,
0.062810484514122,
0.049351094975382,
0.038384184980852,
0.029552425604727,
0.022522333170122,
0.016990532040619,
0.012687253183169,
0.009377534961473,
0.006860620815969,
0.004968035763288,
0.003560780997722,
0.002526024126589,
0.00177359140803,
0.001232495724225,
0.000847665835648,
0.000576982627626,
0.00038867867384,
0.000259119115893,
0.000170954105506,
0.000111614663926,
0.000072113177927,
0.000046105146544,
0.000029168562099,
0.00001825999416,
0.000011310846585,
0.000006932454358,
0.000004204018506,
0.000002522411104,
0.000001497367548,
0.000000879406338,
0.000000510959414,
0.00000029370108,
0.000000167006497,
0.000000093941154,
0.000000052270759,
0.000000028769177,
0.000000015661985,
0.000000008433376,
0.000000004491338,
0.000000002365667,
0.000000001232306,
0.000000000634824,
0.000000000323401,
0.000000000162916,
0.000000000081153,
0.000000000039971,
0.000000000019465,
0.000000000009372,
0.000000000004461,
0.000000000002099,
0.000000000000977,
0.000000000000449,
0.000000000000204,
0.000000000000092,
0.000000000000041,
0.000000000000018,
0.000000000000008];

Аж пропал энтузиазм аналитический вид считать!... sm.gif Хотя может есть другие параметры окон кроме ширины лепестка и степени подавления, которые могут иметь значение для различных целей, но надежда на получение моим окном права где-то применяться уже почти отсутствует sm.gif
ToR_TDA
Цитата(_Ivana @ Jul 20 2012, 23:04) *
Насчет полосы 0 - я не фильтр считаю а показываю (если я правильно понимаю) АЧХ самого окна - то что у Вас на рисунке справа.

Да, видимо, так.

P.S. Статья по теме.
_Ivana
Но, (я потихоньку прихожу в себя от потрясения), простите за глупый вопрос: раз Кайзер настолько хорош - почему ещё не вымерли в результате дарвинского отбора остальные окна? Не, ну тройку исключений типа плоской вершины, и ещё пары - оптимальных для своих задач оставить можно, но все остальные тогда что - просто история? Или они применяются наравне с другими? Судя по графикам мне мое окно очень напоминает Гаусса. Может хоть его то удастся победить, раз мое кунг-фу бессильно против катаны с Кайзером? rolleyes.gif

ToR_TDA, спасибо Вам за контекстные ссылки по теме! Я конечно сразу не смогу все их вдумчиво прочитать и проанализировать, но я обязательно это сделаю чуть попозже (когда немного успокоюсь и от потрясения отойду sm.gif ).
Alexey Lukin
Большинство окон обладают специальными свойствами, полезными в некоторых задачах. Например, окна Хана и Хэмминга упрощают вычисление скользящего оконного ДПФ, т.к. умножение сигнала на эти окна легко сделать уже в частотной области. Прямоугольное окно оптимально для поиска тонов в шуме и обладает наилучшим частотным разрешением при ограниченном размере ДПФ. Окно Чебышева даёт минимакс уровня боковых лепестков при заданной ширине главного лепестка. Окно Блэкмана даёт гораздо более быстрый спад уровня боковых лепестков, чем окно Кайзера. Да и само окно Кайзера, полюбившееся вам, является лишь аппроксимацией оптимального DPSS-окна, минимизирующего суммарную энерию боковых лепестков при заданной ширине главного лепестка.
_Ivana
Да, вот это я затронул тему.... Теперь чтобы хоть как-то ориентироваться в этой области среди Хэммингов и Кайзеров придется в какой-то мере все это прояснять для себя. А тут, похоже, поле обширное, с прилегающими территорями.... Одной последней ссылки хватает для оценки масштабов.
ToR_TDA
Цитата(_Ivana @ Jul 21 2012, 00:54) *
Да, вот это я затронул тему.... Теперь чтобы хоть как-то ориентироваться в этой области среди Хэммингов и Кайзеров придется в какой-то мере все это прояснять для себя. А тут, похоже, поле обширное, с прилегающими территорями.... Одной последней ссылки хватает для оценки масштабов.

Думаю весьма непросто будет вписать свое имя в эту таблицу sm.gif
_Ivana
И вдобавок ко всему, присмотревшись повнимательнее к окну Гаусса я увидел двойку в степени отсчетов в показателе экспоненты. То есть логарифм - масштабированная параметром парабола вниз.... Сейчас впечатлений хватает более чем, но похоже через некоторое время я могу констатировать что придумал окно Гаусса.
Alexey Lukin
Если в окне Кайзера устремить бету (или альфу) к бесконечности, то получится окно Гаусса. Для сигналов конечной длины окно Гаусса ничем не примечательно. Оно оптимально для сигналов, определённых на всей прямой. Для конечных же отрезков оптимальны в этом смысле DPSS и Кайзер.
thermit
Цитата
Alexey Lukin:
Например, окна Хана и Хэмминга упрощают вычисление скользящего оконного ДПФ, т.к. умножение сигнала на эти окна легко сделать уже в частотной области.


Не первый раз встречаю это утверждение в ваших постах, да все было лень спросить... Это как?
Alexey Lukin
Как быстро применить окно Хана или Хэмминга в частотной области? Поскольку окно состоит из одного косинуса плюс DC, то его частотный образ — всего 3 точки. Для применения окна в частотной области сворачиваем спектр сигнала, вычисленный без окна, с 3-точечным фильтром [1].

Как это ускоряет скользящее ДПФ? Поскольку скользящее ДПФ без окна считается со сложностью N, что меньше N logN — сложности FFT, то пользуясь применением окна в частотной области, мы получаем такую же сложность и для скользящего ДПФ с окном [1]. Аналогично можно сэкономить на пирамиде ДПФ разных размеров при многомасштабном анализе сигнала [2].

Кстати, хочу реабилитировать окно Гаусса. У него есть полезное особое свойство: его частотный спектр тоже является Гауссианом (если пренебречь краевыми эффектами), и это в полтора раза ускоряет вычисление производных спектра в методе переназначения (reassignment).

____________________________________________________
[1] E. Jacobsen, R. Lyons "The Sliding DFT"
[2] K. Dressler "Sinusoidal Extraction Using an Efficient Implementation of a Multi-resolution FFT"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.