Добрый день!
Дано:
Целочисленный сигнала
Фильтр с коэффициентами с плавающей точкой и без усиления\ослабления (0 дБ).
Однако при фильтрации максимальное значение выходного сигнала иногда превышает максимум входного, а следовательно и размер переменной под хранение.
Как правильно обрабатывать такое событие? Достаточно ли обрезать выходное значение под размер переменной? (Или этот может внести в сигнал неожиданные спектральные составляющие ... ). При этом погрешность такого округления вроде бы устраивает.
Фильтрация целочисленного сигнала
- Бахурин Сергей
- Администратор
- Сообщения: 1114
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Фильтрация целочисленного сигнала
Правильно такое событие не допускать. Разрядности должны приводиться таким образом, чтобы исключить переполнение регистров выходных фильтров.
Re: Фильтрация целочисленного сигнала
Тогда мне нужно сделать ослабление до разрядности выходного сигнала?
- Бахурин Сергей
- Администратор
- Сообщения: 1114
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Фильтрация целочисленного сигнала
Реальный фильтр имеет неравномерную в полосе пропускания АЧХ. В результате на некоторых частотах может появиться небольшое усиление. Это усиление надо учесть при прохождении сигнала таким образом, чтобы не возникало переполнения выхода. Например можно уменьшить входной сигнал на величину максимального усиления АЧХ фильтра, тогда на выходе он всегда будет в разрядности.
- Бахурин Сергей
- Администратор
- Сообщения: 1114
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Фильтрация целочисленного сигнала
Обычно неравномерности АЧХ это доли дБ и надо дать по входу этот запас по уровню. Например если 16 бит разрядность входного сигнала (знаковая), то реальная максимальная амплитуда не должна превышать 29000, тогда будет порядка 1 дБ запас на обработку
Re: Фильтрация целочисленного сигнала
На входе сигнал занимает всю разрядность, 16 бит. Если ослаблять, то уже имеющейся. При этом неравномерность составляет сотые дБ (около 0.02 дБ). Т.е нужно ослабить в 1.0023 раза. При этом ошибка фильтрации 10e-4 устраивает.
Не будет ли ослабление сигнала вносить большие погрешности, чем обрезка...
Не будет ли ослабление сигнала вносить большие погрешности, чем обрезка...
- Бахурин Сергей
- Администратор
- Сообщения: 1114
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Фильтрация целочисленного сигнала
Покажите пример. Сигнал на входе, на выходе (с переполнением) и фильтр который вносит перепонение
Re: Фильтрация целочисленного сигнала
Я убедился в необходимости запаса по уровню во входном сигнале, так что вы ответили на вопрос. Спасибо)
Фильтрую в матлабе функцией upfirdn. up = 5, down = 2.
Код: Выделить всё
s = [32767,32133,30242,27144,22941,17784,11868,5424,-1286,-7981,-14372,-20175,-25124,-28983,-31559,-32711,-32364,-30506,-27200,-22580,-16846,-10259,-3132,4191,11341,17953,23676,28198,31261,32680,32351,30265,26509,21265,14804,7473,-322,-8137,-15517,-22020,-27245,-30858,-32617,-32385,-30148,-26016,-20223,-13113,-5126,3232,11417,18884,25124,29698,32271,32637,30742,26685,20725,13260,4808,-4031,-12614,-20302,-26509,-30749,-32672,-32102,-29048,-23718,-16499,-7942,1286,10450,18802,25645,30394,32626,32122,28888,23170,15429,6314,-3392,-12836,-21173,-27640,-31628,-32742,-30845,-26077,-18851,-9819,181,10202,19276,26509,31169,32767,31107,26319,18851,9435,-985,-11341,-20553,-27640,-31828,-32639,-29948,-24007,-15429,-5126,5780,16081,24613,30394,32736,31333,26307,18204,7942,-3292,-14173,-23396,-29832,-32672,-31531,-26509,-18188,-7571,4031,15162,24400,30542,32766,30742,24693,15375,3991,-7962,-18884,-27289,-32010,-32364,-28259,-20223,-9338,2891,14750,24547,30858,32742,29882,22652,12074,-322,-12706,-23227,-30280,-32767,-30265,-23113,-12372,322,13002,23676,30636,32742,29612,21705,10259,-2891,-15606,-25782,-31710,-32364,-27586,-18137,-5582,7962,20175,28936,32691,30742,23382,11868,-1789,-15162,-25844,-31880,-32133,-26509,-15993,-2491,11511,23396,30912,32601,28095,18204,4788,-9589,-22139,-30394,-32699,-28550,-18719,-5126,9531,22301,30579,32639,28012,17598,3512,-11341,-23856,-31379,-32281,-26319,-14714,80,14894,26509,32367,31138,23041,9819,-5622,-19841,-29630,-32742,-28421,-17598,-2711,12836,25444,32153,31350,23170,9493,-6471,-20927,-30394,-32556,-26836,-14571,1286,16863,28310,32758,29048,18054,2491,-13736,-26509,-32542,-30242,-20143,-4808,11811,25380,32315,30742,21019,5681,-11209,-25124,-32288,-30714,-20772,-5126,11961,25782,32482,30148,19374,3132,-14028,-27245,-32729,-28860,-16690,322,17275,29232,32664,26509,12521,-5205,-21418,-31261,-31741,-22652,-6688,11341,25943,32617,29259,16846,-824,-18271,-30029,-32364,-24480,-8817,9685,25124,32523,29447,16828,-1286,-19015,-30542,-32036,-22941,-6215,12614,27256];
filter = [0,0,-1.43101000000000e-18,-0.000885369000000000,-0.00179830000000000,-0.00221207000000000,-0.00165480000000000,3.70656000000000e-18,0.00233542000000000,0.00442272000000000,0.00513455000000000,0.00365804000000000,-6.98445000000000e-18,-0.00477376000000000,-0.00875545000000000,-0.00988002000000000,-0.00686256000000000,1.12067000000000e-17,0.00857565000000000,0.0154382000000000,0.0171292000000000,0.0117166000000000,-1.61731000000000e-17,-0.0142574000000000,-0.0253751000000000,-0.0278667000000000,-0.0188870000000000,2.15504000000000e-17,0.0226372000000000,0.0400491000000000,0.0437666000000000,0.0295513000000000,-2.69045000000000e-17,-0.0352787000000000,-0.0624137000000000,-0.0683082000000000,-0.0462672000000000,3.17517000000000e-17,0.0559139000000000,0.0998891000000000,0.110728000000000,0.0762419000000000,-3.56208000000000e-17,-0.0966372000000000,-0.178634000000000,-0.206936000000000,-0.150965000000000,3.81176000000000e-17,0.230548000000000,0.500507000000000,0.754126000000000,0.934654000000000,1,0.934654000000000,0.754126000000000,0.500507000000000,0.230548000000000,3.81176000000000e-17,-0.150965000000000,-0.206936000000000,-0.178634000000000,-0.0966372000000000,-3.56208000000000e-17,0.0762419000000000,0.110728000000000,0.0998891000000000,0.0559139000000000,3.17517000000000e-17,-0.0462672000000000,-0.0683082000000000,-0.0624137000000000,-0.0352787000000000,-2.69045000000000e-17,0.0295513000000000,0.0437666000000000,0.0400491000000000,0.0226372000000000,2.15504000000000e-17,-0.0188870000000000,-0.0278667000000000,-0.0253751000000000,-0.0142574000000000,-1.61731000000000e-17,0.0117166000000000,0.0171292000000000,0.0154382000000000,0.00857565000000000,1.12067000000000e-17,-0.00686256000000000,-0.00988002000000000,-0.00875545000000000,-0.00477376000000000,-6.98445000000000e-18,0.00365804000000000,0.00513455000000000,0.00442272000000000,0.00233542000000000,3.70656000000000e-18,-0.00165480000000000,-0.00221207000000000,-0.00179830000000000,-0.000885369000000000,-1.43101000000000e-18];
sFiltered = [0,-4.68899046700000e-14,-58.9248961000000,-54.2228316000000,48.0751450630000,97.1633545400000,-1.53033185090000e-13,-199.158756990000,-157.366165800000,174.198408974000,339.032446760000,-3.13280749270000e-13,-521.377028620000,-388.587289760000,451.217431984000,866.949773290000,-4.85309004790000e-13,-1250.09860137000,-931.629255100000,1130.86359291400,2266.64607104000,-6.08265135500000e-13,-3829.17162652000,-3378.25559042000,5528.17842282900,20224.6703434900,32767,37167.1709360800,34398.5675285200,30293.6985732950,29140.0489562700,30242,30516.8816202000,28570.3348598200,25805.9722699470,23966.3911084100,22941,21556.3075890400,19186.0725921200,16421.6975042590,14012.1118322800,11868,9561.49013813000,6859.50344305000,4019.32086502400,1328.66711469000,-1286,-3918.44668523000,-6623.40542004000,-9304.38117412000,-11874.0668305200,-14372,-16793.1122493900,-19075.2460334270,-21255.1006770490,-23273.9748824400,-25124,-26828.6204878900,-28315.0818803560,-29620.2893876990,-30710.1631700100,-31559,-32216.2731328400,-32610.8092924160,-32774.7613000770,-32705.2764091000,-32364,-31818.3047214500,-31011.1844059560,-29964.9252387920,-28708.7034838400,-27200,-25512.3747711700,-23614.9616221910,-21516.5864797400,-19272.8420537100,-16846,-14301.1153370400,-11641.4891743350,-8861.45752039500,-6033.03627691000,-3132.00000000000,-200.506129070000,2722.74764624700,5657.41680924500,8528.71054098000,11341,14085.1384434400,16692.5775304990,19194.3622036530,21527.8983877700,23676,25666.1874869800,27411.9478869940,28950.8581885930,30245.5114539300,31261,32057.8362916400,32548.4573006800,32770.5753901200,32719.6397444100,32351,31746.6763213600,30836.8219590410,29652.9972420320,28224.8491341800,26509,24591.5851116100,22436.4368602410,20063.0506407150,17529.1363979200,14804,11958.5871448800,9000.22288805300,5932.30292775400,2828.02931653000,-322.000000000000,-3479.12698443000,-6591.96418555200,-9674.51541906300,-12654.5696136700,-15517,-18266.0929777600,-20816.0589554900,-23196.0939552380,-25351.2924104300,-27245,-28925.4243401600,-30291.3084690650,-31382.2697694160,-32173.8140125700,-32617,-32793.8878006800,-32611.2237342450,-32111.3676780320,-31306.2259860800,-30148,-28733.8901646100,-27002.1091192270,-24989.1636103730,-22740.4978549900,-20223,-17524.9799309700,-14632.9597728170,-11569.7536074950,-8403.43503784000,-5126,-1793.91965419000,1552.62830829000,4910.20415316000,8205.19887974000,11417,14536.8403789600,17479.2907760620,20262.0911178290,22825.0774293700,25124,27201.8354309500,28948.8534930950,30400.8695168580,31526.7721905900,32271,32718.5325230900,32764.4156588840,32455.4148177610,31798.0115905600,30742,29392.2933010400,27677.6274421870,25645.0275821480,23337.0084283100,20725,17905.5412117900,14862.3342697320,11631.1091966220,8278.62556868000,4808,1279.88515320000,-2260.52949138600,-5798.33790184200,-9261.26401214000,-12614,-15850.0974536400,-18873.9580933020,-21696.4009377000,-24260.4469627200,-26509,-28493.4524953900,-30094.6710602230,-31347.6194859650,-32227.0266032000,-32672,-32778.1850261000,-32438.3635714850,-31703.7465868940,-30588.3443261200,-29048,-27195.0197899600,-24967.4062494200,-22419.5140309920,-19600.4810697000,-16499,-13210.2890444300,-9738.34848787100,-6125.82809922100,-2442.05934888000,1286.00000000000,5010.53939585000,8661.56586825800,12221.0713645480,15620.6404164800,18802,21780.4170119300,24441.1116227410,26797.9509229370,28805.5793517100,30394,31638.0148268400,32414.8218375480,32767.8596297320,32689.2973603100,32122,31176.9825573900,29764.4627212620,27946.3880461050,25755.6212683700,23170,20300.9236020400,17122.6428258380,13697.0399865590,10086.5383698200,6314,2454.34076563000,-1443.47452353000,-5336.86903759900,-9154.80895940000,-12836,-16368.3000861000,-19644.1180441050,-22655.2891631940,-25346.6259560200,-27640,-29591.0455924600,-31070.7914174140,-32110.0787978210,-32688.8837305400,-32742,-32374.6195322100,-31483.0870189920,-30129.3460575130,-28335.8896147400,-26077,-23471.0076626000,-20478.3160586410,-17172.5683842290,-13610.7757047000,-9819,-5886.46663493000,-1853.54232589200,2219.31675043500,6261.16530862000,10202,14014.4965691200,17592.6906332170,20911.7002399870,23912.9693959000,26509,28745.0327317500,30489.7393863820,31765.0998129820,32547.3062069700,32767,32525.7929164600,31718.3106130550,30408.0262754120,28615.2367621000,26319,23639.5573816900,20540.2172042990,17104.8128544110,13390.1604976600,9435,5332.09807248000,1129.12165460100,-3100.42743965000,-7285.35471125000,-11341,-15238.3396624500,-18864.0470983940,-22184.0270105370,-25141.2290680300,-27640,-29726.9898315100,-31269.9872189310,-32290.0770262940,-32767.9121536900,-32639,-32007.6035810400,-30778.4909397130,-29022.4333941430,-26766.1176754900,-24007,-20865.4915647300,-17325.0097151690,-13480.0689306280,-9392.55651383000,-5126.00000000000,-767.734646500000,3612.16284896500,7933.10073665700,12123.9057258100,16081,19786.5242175100,23114.2692493870,26032.3863423880,28491.3020688900,30394,31799.9972362300,32583.3699121620,32777.1135035190,32375.0940612000,31333,29762.8812371700,27597.0025138920,24922.7542733520,21780.9830827500,18204,14308.4587551200,10116.7180785510,5734.98832531100,1233.16027199000,-3292.00000000000,-7770.17014424000,-12098.8019941800,-16199.1960447900,-20003.8807275600,-23396,-26382.8190590300,-28830.2242024470,-30724.3151723540,-32031.5146776500,-32672,-32727.6853178900,-32097.7837137240,-30843.0868111970,-28980.4191226900,-26509,-23548.7565123700,-20082.0610312230,-16219.8329808590,-12022.0340390400,-7571.00000000000,-2970.13119591000,1705.43967088200,6344.45849008600,10872.1878013000,15162,19175.1882727700,22781.3287381970,25922.1833818900,28544.6711115900,30542,31958.8422546100,32676.2195198180,32719.9015903410,32085.1304972600,30742,28797.7799135000,26207.1634474690,23071.7456903420,19438.8283892800,15375.0000000000,10998.9205470800,6363.16588505200,1597.77682232000,-3221.09546337000,-7962.00000000000,-12552.4035177200,-16869.2154121590,-20818.5322681320,-24334.2121310100,-27289,-29692.7385028100,-31418.3722492200,-32458.2881350280,-32791.1305609800,-32364,-31264.6897985400,-29432.2942894840,-26954.0578154660,-23866.2002563100,-20223,-16146.4376695000,-11676.1555730370,-6952.68544120600,-2051.83667664000,2891,7781.71492969000,12501.9112191510,16930.7692676200,20993.3676114400,24547,27573.9758212800,29944.0440608360,31622.6866641350,32577.8028194000,32742,32184.1808284300,30837.4903513200,28776.4182855780,26030.9699050600,22652,18759.9058444500,14391.1220899410,9692.29643199200,4739.96170059000,-322.000000000000,-5385.33955265000,-10330.7619610480,-15018.8252351040,-19369.1296986100,-23227,-26555.3364786900,-29223.2266546100,-31178.5955472480,-32383.9984329000,-32767,-32383.1410535600,-31169.8286216220,-29196.3938121310,-26491.7120938800,-23113,-19179.0792446900,-14735.4445464980,-9937.81100181600,-4866.43399973000,322.000000000000,5511.25865217000,10574.9293965840,15359.6229863400,19780.6818343500,23676,26998.3259162700,29619.3117062440,31479.9159723740,32542.6223579700,32742,32128.6678968300,30655.0230596300,28396.4727529580,25387.5741064600,21705,17469.8114262500,12747.5109461850,7707.23760333500,2436.26277025000,-2891.00000000000,-8153.28936830000,-13212.9474440320,-17908.0641363390,-22151.8282090300,-25782,-28750.0746772400,-30936.8935913980,-32290.4324145580,-32780.3955870400,-32364,-31096.4933671200,-28957.3372400540,-26041.8167047390,-22398.2890062200,-18137,-13386.3060669500,-8240.28333635800,-2885.59962534400,2580.01544809000,7962,13136.7244898600,17957.7011006290,22264.8765092970,25974.2278448700,28936,31109.5466661600,32396.9583711540,32771.5350419570,32220.0689122200,30742,28408.3139493100,25239.9595057400,21366.7473885310,16858.0470438700,11868,6536.74701528000,992.206097514000,-4560.63715211800,-10014.1278607000,-15162,-19884.6828122200,-24036.7313814820,-27475.1510096150,-30127.5891959400,-31880,-32713.5496196200,-32570.4508711750,-31470.5197696220,-29429.0349761400,-26509,-22808.7551631500,-18403.1826910790,-13467.1419380690,-8096.22575694000,-2491.00000000000,3195.64887781000,8807.83550852200,14133.2163754010,19061.3902153300,23396,27033.0780789300,29850.2387943210,31747.7593082910,32680.3724660300,32601,31529.1103866600,29469.3032083060,26510.1328293010,22707.5405215000,18204,13133.7855714400,7629.00926272700,1908.55425634900,-3907.83395141000,-9589,-14977.3750566300,-19911.2830816630,-24198.0657903580,-27741.3890394500,-30394,-32088.4780069200,-32759.0252477690,-32383.6253640180,-30963.3542560900,-28550,-25219.1500219500,-21056.0255432080,-16232.0855318160,-10849.6537902700,-5126.00000000000,770.515938920000,6666.41653681500,12320.6959420790,17604.9248111500,22301,26270.2256896000,29386.6784020880,31522.2293755760,32621.8742530700,32639,31571.4865929800,29444.6469840310,26346.2625775440,22341.5604799200,17598,12257.5540853900,6481.39021213100,511.339161617001,-5513.98816410000,-11341,-16787.7900593000,-21685.3637455790,-25824.2609082590,-29101.0393621400,-31379,-32577.7647341800,-32661.2480785490,-31621.2361458420,-29475.3919246000,-26319,-22241.1458404100,-17373.9145266110,-11923.7399473800,-6020.61333957000,80.0000000000000,6184.04796397000,12097.0471991220,17559.6499318990,22432.7037485600,26509,29642.6450759100,31740.3696092420,32701.7830565590,32495.2262129200,31138,28654.6449451700,25137.3578318340,20732.9887643440,15548.9961687700,9819,3724.89724518000,-2528.88619065100,-8664.22013059000,-14520.2614122100,-19841,-24432.9302156500,-28154.2997608040,-30827.8017291470,-32376.1428875800,-32742,-31883.9708457100,-29850.6074310060,-26720.1858271370,-22570.2593597800,-17598,-11956.2615034000,-5847.96193459300,453.176962653999,6776.14890603000,12836,18409.9563836000,23317.4445291210,27322.5027818190,30308.3788297000,32153,32755.6924360700,32123.0908136180,30266.3431158530,27230.4165786100,23170,18200.4476338800,12516.5058320500,6373.48606235800,-55.3815042399997,-6471,-12635.7748266500,-18338.9436090310,-23303.1364509460,-27379.5305037600,-30394,-32196.2921857300,-32755.1850670310,-32022.0389566560,-30010.8373877800,-26836,-22574.9462603000,-17411.9347926760,-11577.7889479720,-5243.64075489000,1286,7767.75628135000,13967.7582365800,19581.1017363770,24433.2922373600,28310,31021.1565489200,32504.2500899830,32662.4371560210,31483.3880750500,29048,25399.8683674300,20714.1586785630,15198.5623257250,9021.93533581000,2491.00000000000,-4148.94902186000,-10645.9114029960,-16676.5707560710,-22045.5521172500,-26509,-29846.1953737100,-31971.6221572210,-32753.0006627790,-32157.5321895400,-30242,-27023.9232150000,-22674.6805407470,-17386.0299351780,-11327.3307494000,-4808,1924.21686840000,8601.70005988800,14887.0807298680,20567.6476335300,25380,29080.6080373500,31569.4625070640,32691.1837770910,32400.1683351000,30742,27719.1115852300,23506.2102858240,18288.7368541620,12241.5151747000,5681,-1137.63982826000,-7932.57346050200,-14354.5241209060,-20176.3880514800,-25124,-28937.3677263300,-31511.9081597730,-32682.5536969280,-32400.3779643000,-30714,-27623.2642987300,-23315.0250673990,-17980.7994042390,-11808.0250884600,-5126,1795.76331494000,8662.79461945500,15114.7582808000,20913.0416689100,25782,29451.9281697000,31825.4479912490,32742.1497443450,32160.6735214700,30148,26716.1124612900,22074.4500543010,16434.7196531440,10004.8879460600,3132,-3892.87543132000,-10765.4556734480,-17115.5456700290,-22697.2265436400,-27245,-30488.4460002100,-32351.4607114120,-32694.4557067480,-31496.6965690900,-28860,-24825.2438088200,-19634.4805988090,-13533.4988206610,-6758.70607418000,322,7389.92615661000,14137.6317117820,20190.1678824820,25301.8191020600,29232,31722.1288117200,32734.4537455640,32169.8184856130,30043.7212963900,26509,21653.3515698000,15759.4217694320,9118.92154487900,2001.97836708000,-5205,-12153.5318278400,-18544.2792590590,-24007.9207430340,-28311.9125634000,-31261,-32626.9255630800,-32428.7841387700,-30629.2271047990,-27297.2645323400,-22652,-16846.6730010600,-10207.6071999250,-3078.70745025000,4235.90495431000,11341.0000000000,17863.5086721500,23531.5445345940,28000.8766336350,31071.3217326700,32617,32464.8727474900,30711.2847392010,27404.9792797830,22685.3744346800,16846,10119.5034009900,2870.58064536200,-4506.48821079200,-11681.4027926900,-18271,-23894.6248980600,-28335.1530534810,-31302.2988166950,-32654.8309601200,-32364,-30342.8024112500,-26780.9864776780,-21833.8332014560,-15723.5254608700,-8817.00000000000,-1432.63680956000,6044.48392091300,13186.7718887750,19659.1391190000,25124,29224.2103783000,31831.3622737990,32747.0305621660,31920.8424897500,29447,25415.9242346300,19995.1722152760,13419.3725606200,6147.46551370000,-1286.00000000000,-8570.03432227000,-15645.9573821290,-22145.2122225800,-27328.9921617500,-30542,-31916.2008468500,-32227.5036043200,-31466.9161051400,-28609.3724833000,-22941,-15629.9124714100,-8986.79257971500,-3565.93918950000,2937.61202371000,12614,23172.7124599800,28359.4639834730,23587.2333525800,11430.7179155600,6.29183701610000e-13,-4309.42032176000,-1961.00520245200,1510.87385522000,1959.56128210000,5.48803594460000e-13,-1327.74643783000,-685.695782795000,585.176866920000,789.644544330000,3.98913397210000e-13,-528.988559130000,-275.970715836000,248.011365960000,324.109928400000,2.27140492910000e-13,-190.774596370000,-95.1520463450000,78.8298910400000,97.8619001200000,8.29752392200000e-14,-60.2921799200000,-24.1316174640000];