обмеження можливого формування шуму?


9

Я хочу зайнятися формуванням шуму в 16-бітному додатку 100 кГц, щоб перенести весь шум квантування в діапазон 25 кГц-50 кГц, з мінімальним шумом в діапазоні DC-25 кГц.

Я створив математику, щоб створити ядро ​​фільтра помилок 31-зразок за допомогою підсилення, яке добре працює: після невеликого навчання я можу отримати приблизно 16 дБ посилення шуму високої частоти приблизно на стільки ж зменшення смуги низьких частот ( центральна лінія - це несформований рівень шуму в темряві). Це відповідає теоремі про формування шуму "Герзон-Крейвен".

отриманий спектр шуму після деякого навчання

Тепер до моєї проблеми:

Я не можу ще більше сформувати шум навіть після широкого вивчення, хоча теорема Герзона-Крейвена це не забороняє. Наприклад, слід досягти зменшення на 40 дБ у нижній смузі та на 40 дБ посилення у високому діапазоні.

То чи є ще одна основна межа, на яку я стикаюся?

Я спробував заглянути в теореми Шумнона про шум / вибірку / інформацію, але, познайомившись з цим, мені вдалося лише отримати єдину межу: теорему Герзона-Крейвена, яка, здається, є прямим результатом теореми Шеннона.

Будь-яка допомога вдячна.

EDIT: додаткова інформація

По-перше, ядро ​​фільтра, яке видає вищезгадане формування шуму. Зверніть увагу, що останній зразок знаходиться з правого боку. Числові значення BarChart округлили до .01: {-0.16, 0.51, -0.74, 0.52, -0.04, -0.25, 0.22, -0.11, -0.02, 0.31, -0.56, 0.45, -0.13, 0.04, -0.14, 0,12, -0,06, 0,19, -0,22, -0,15, 0,4, 0,01, -0,41, -0,1, 0,84, -0,42, -0,81, 0,91, 0,75, -2,37, 2,29} (Не зовсім смуга, але створює подібну криву )

Ядро фільтра, найновіший зразок RIGHT.

Ще одна примітка про реалізацію зворотного зв'язку з помилками:

Я спробував дві різні реалізації зворотного зв'язку з помилками. Спочатку я порівняв зразок округленого виводу з потрібним значенням і використав це відхилення як помилку. По-друге, я порівняв зразок округлого виводу з (вхід + відгуки про помилки). Хоча обидва способи дають досить різні ядра, обидва, здається, вирівнюються приблизно з однаковою інтенсивністю формування шуму. Дані, розміщені тут, використовують другу реалізацію.

Ось код, який використовується для обчислення оцифрованих хвильових зразків. крок - це ступінчастий розмір для округлення. хвиля - це недигітизована форма хвилі (зазвичай це просто нулі, коли сигнал не застосовується).

TestWave[kernel_?VectorQ] := 
 Module[{k = kernel, nf, dith, signals, twave, deltas},
  nf = Length@k;
  dith = RandomVariate[TriangularDistribution[{-1, 1}*step], l];
  signals = deltas = Table[0, {l}];
  twave = wave;
  Do[
   twave[[i]] -= k.PadLeft[deltas[[;; i - 1]], nf];
   signals[[i]] = Round[twave[[i]] + dith[[i]], step];
   deltas[[i]] = signals[[i]] - twave[[i]];
   , {i, l}];
  signals
  ]

Спосіб армування:

"Оцінка" обчислюється, переглядаючи спектр потужності шуму. Мета - мінімізувати потужність шуму в діапазоні DC-25 кГц. Я не караю шуму у високочастотній смузі, тому довільно високий шум там не зменшить бал. Я ввожу шум у вазі ядра, щоб навчитися. Можливо, тому я перебуваю у (дуже широкому та глибокому) місцевому мінімумі, але я вважаю це вкрай малоймовірним.

Порівняння зі стандартною конструкцією фільтра:

Mathematica дозволяє генерувати фільтри ітераційно. Вони можуть мати набагато кращий контраст, ніж 36 дБ, коли будується їх частотна характеристика; до 80-100 дБ. Числові значення: {0.024, -0.061, -0.048, 0.38, -0.36, -0.808, 2.09, -0.331, -4.796, 6.142, 3.918, -17.773, 11.245, 30.613, -87.072, 113.676, -87.072, 30.613, 11.245 , -17.773, 3.918, 6.142, -4.796, -0.331, 2.09, -0.808, -0.36, 0.38, -0.048, -0.061, 0.024}

введіть тут опис зображення

Однак, застосовуючи ті, хто фактично формує шум, вони (a) затискаються на той же контраст ~ 40 дБ, (b) виконують гірше, ніж вивчений фільтр, фактично не гасячи шуму.

синій: вивчений фільтр, жовтий: фільтр позабіржового оснащення, НЕ зміщений ... справді гірше


2
+1, дуже цікаве запитання. Ви намагалися збільшити порядок фільтра вище 31 дотику? Придушення 40 дБ звучить трохи високо для FIR з 31 краном.
A_A

1
@ Оллі, я не вірю, що розумію повністю. Я можу розмістити ядро ​​фільтра, якщо саме це вас цікавить. Тупими словами є коливальні ваги, які змушують помилку альтернативу -> пересуває її на високі частоти.
тобальт

2
@tobalt від "класичної" конструкції фільтрів, це очікуваний результат, що довші фільтри крутіші та / або мають більше ослаблення в упорній смузі та / або менше пульсації в смузі проходу. Тепер я здогадуюсь, що ваш метод підкріплення нагороджує крутість більше, ніж ослаблення через деякий момент; який метод ви використовуєте для підкріплення?
Маркус Мюллер

1
Ви можете ознайомитись із розділом « Дизайн фільтра» в Mathematica. Можливо, ви можете просто визначити технічні характеристики вашого фільтра і використовувати одну з існуючих методик, щоб повернути фільтр, який їх задовольняє.
A_A

1
Тоді це безумовно (необов'язково ітеративна) конструкція фільтра. Отримайте свої специфікації фільтра (саме так, як ви їх розмістили тут) і спробуйте створити фільтр за допомогою цієї функції (найпростіший її тип) і подивіться, що він придумує. Було б добре бачити коефіцієнти, які функціонують, порівняно з тими, з якими повертається повторне навчання. Крім того, зверніть увагу на такий порядок фільтру, який він придумує, я здогадуюсь, він був би більшим за 31. Чи до речі, він повинен бути "адаптивним" до сигналу?
A_A

Відповіді:


12

Основне відшарування без формування шуму

Основна дефітована квантування без формування шуму працює так:


Рисунок 1. Основна схема системи квантування на кінці. Шум - це нульове середнє трикутне забарвлення з максимальним абсолютним значенням 1. Округлення до найближчого цілого числа. Залишкова помилка - це різниця між виходом і входом і розраховується лише для аналізу.

Трикутна тремтіння збільшує дисперсію результуючої залишкової помилки в 3 рази (від до ), але розв'язує середнє значення та дисперсію чистої помилки квантування від значення вхідного сигналу. Це означає, що сигнал чистої помилки некорельований з входом, але більш високі моменти не розв'язуються, тому це не справді абсолютно незалежна випадкова помилка, але ніхто не визначив, що люди можуть почути будь-яку залежність вищих моментів у сигналі чистої помилки від вхідний сигнал в аудіо-програмі.11214

З незалежною додатковою залишковою помилкою ми мали б більш просту модель системи:


Малюнок 2. Апроксимація базової дефірованої квантування. Залишкова помилка - білий шум.

У наближеній моделі вихід просто вводиться плюс незалежна помилка білого шуму.

Дихання з шумовою формою

Я не можу дуже добре читати Mathematica, тому замість вашої системи я проаналізую систему від Lipshitz et al. " Мінімально чутне формування шуму " J. Audio Eng. Соц., Т.39, №11, листопад 1991:

Система Ліпшиц та ін 1991 р
Малюнок 3. Ліпшиц та ін. Системна схема 1991 р. (Адаптована з їх рис. 1). Фільтр (курсивом у тексті) включає в нього затримку на один зразок, щоб його можна було використовувати як фільтр зворотного зв'язку з помилками. Шум - це трикутна туга.

Якщо залишкова помилка не залежить від поточного та минулого значень сигналу A, у нас є більш проста система:


Малюнок 4. Орієнтовна модель Lipshitz et al. 1991 р. Система. Фільтр такий же, як на рис. 3, і включає в нього одну затримку вибірки. Він більше не використовується як фільтр зворотного зв'язку. Залишкова помилка - білий шум.

У цій відповіді я буду працювати з більш легко проаналізованою приблизною моделлю (рис. 4). В оригіналі Lipshitz et al. Система " Фільтр" 1991 року має загальну форму фільтрів безмежної імпульсної відповіді (IIR), яка охоплює як фільтри IIR, так і кінцеві імпульсні реакції (FIR). Далі ми припустимо, що Filter - це фільтр FIR, як я вважаю, на основі моїх експериментів з вашими коефіцієнтами, це те, що у вас є у вашій системі. Функція передачі фільтра :

HFilter(z)=b1z1b2z2b3z3

Коефіцієнт являє собою затримку однієї вибірки. У наближеній моделі також існує прямий шлях підсумовування до виходу із залишкової помилки. Це підсумовується заперечним виходом фільтра , утворюючи функцію передачі фільтра повного шуму:z1

H(z)=1HFilter(z)=1+b1z1+b2z2+b3z3+.

Щоб перейти від ваших коефіцієнтів фільтру , які ви перераховуєте у порядку , до функції передачі фільтру повного шуму, коефіцієнти полінома , знак коефіцієнтів змінюється для врахування заперечення виходу фільтра на системній діаграмі, а коефіцієнт додається в кінці (за сценарієм Octave нижче), і нарешті список перевертається (за ):,b3,b2,b11,b1,b2,b3,b0=1horzcatflip

pkg load signal
b = [-0.16, 0.51, -0.74, 0.52, -0.04, -0.25, 0.22, -0.11, -0.02, 0.31, -0.56, 0.45, -0.13, 0.04, -0.14, 0.12, -0.06, 0.19, -0.22, -0.15, 0.4, 0.01, -0.41, -0.1, 0.84, -0.42, -0.81, 0.91, 0.75, -2.37, 2.29];
c = flip(horzcat(-b, 1));
freqz(c)
zplane(c)

Сценарій подає графік частотного відгуку та нульові розташування фільтра для формування повного шуму:

Сюжет Freqz
Малюнок 5. Частотна характеристика фільтра повного шумового формування.

Зпланова ділянка
Малюнок 6. Графік Z-площини полюсів ( ) та нулів ( ) фільтра. Усі нулі знаходяться всередині одиничного кола, тому фільтр, що формує повний шум, є мінімальним.×

Я думаю, що проблема пошуку коефіцієнтів фільтра може бути переформульована як проблема проектування фільтра мінімальної фази з провідним коефіцієнтом 1. Якщо існують притаманні обмеження частотній характеристиці таких фільтрів, то ці обмеження переносяться на еквівалентні обмеження у формуванні шуму, який використовує такі фільтри.

Перетворення з багатополюсної конструкції на мінімальнофазну ПДЧ

Процедура проектування різних, але багато в чому еквівалентних фільтрів описана в Stojanović et al. , "Проектування багатополюсних рекурсивних цифрових фільтрів на основі ультрасферних поліномів", Радіоінженерія, т. 23, № 3, вересень 2014 р. Вони обчислюють коефіцієнти знаменника передатної функції IIR багатополюсного низькочастотного фільтра. Вони завжди мають провідний коефіцієнт знаменника 1 і мають усі полюси всередині одиничного кола, вимога стабільних фільтрів IIR. Якщо ці коефіцієнти будуть використані в якості коефіцієнтів фільтру для формування шуму мінімальної фази FIR, вони даватимуть перевернуту частотну характеристику частоти порівняно з низькочастотним фільтром IIR (коефіцієнти знаменника функції передачі стають коефіцієнтами чисельника). У вашій нотації є один набір коефіцієнтів із цієї статті {-0.0076120, 0.0960380, -0.5454670, 1.8298040, -3.9884220, 5.8308660, -5.6495140, 3.3816780}, який можна перевірити на додаток для формування шуму, хоча це не зовсім відповідає специфікації

Частотна характеристика
Малюнок 7. Частотна характеристика частоти FIR-фільтра з використанням коефіцієнтів Stojanović et al. 2014 рік.

Сюжетно-нульовий сюжет
Малюнок 8. Полюсно-нульовий графік фільтра FIR з використанням коефіцієнтів Стоянович та ін. 2014 рік.

Функція перенесення полюсів:

H(z)=11+a1z1+a2z2+a3z3+

Таким чином, ви можете створити стабільний полюсний Біє - фільтр нижніх частот і використовувати коефіцієнти а коефіцієнти для отримання високих частот FIR фільтра мінімальної фази з провідним коефіцієнтом 1.ab

Щоб створити повнополюсний фільтр і перетворити його в мінімальнофазний фільтр FIR, ви не зможете використовувати методи проектування фільтру IIR, які починаються з аналогового фільтра-прототипу і відображають полюси і нулі в цифровий домен за допомогою білінеарного перетворення . Це включає в себе cheby1, cheby2і ellipв октаву і SciPy Python. Ці методи дадуть нулі подалі від площини z-площини, тому фільтр не буде необхідним повнополюсним типом.

Відповідь на теоретичне запитання

Якщо вам все одно, який шум буде на частотах, що перевищують чверть частоти вибірки, то Lipshitz та ін. 1991 вирішує ваше запитання безпосередньо:

Для таких зважувальних функцій, які йдуть на нуль над частиною смуги, немає теоретичного обмеження зваженого зниження шумової потужності, отриманого з ланцюга на рис. 1. Це було б у випадку, якщо, наприклад, можна вважати, що вухо має нульову чутливість між, скажімо, 20 кГц і частотою Найкіста, і вибирає функцію зважування для відображення цього факту.

Їх фіг.1 показує формувач шуму із загальною структурою фільтра IIR як з полюсами, так і з нулями, настільки відмінними від структури FIR, яку ви маєте на даний момент, але те, що вони кажуть, стосується і цього, тому що імпульсна реакція фільтра FIR може бути зроблені довільно близькими до імпульсної реакції будь-якого заданого стабільного фільтра IIR.

Сценарій Octave для дизайну фільтрів

Ось сценарій Octave для обчислення коефіцієнтів іншим методом, який, на мою думку, еквівалентний Stojanovici et al. Метод 2014 року параметризований як з правильним вибором мого параметра.ν=0dip

pkg load signal
N = 14; #number of taps including leading tap with coefficient 1
att = 97.5; #dB attenuation of Dolph-Chebyshev window, must be positive
dip = 2; #spectrum lift-up multiplier, must be above 1
c = chebwin(N, att);
c = conv(c, c);
c /= sum(c);
c(N) += dip*10^(-att/10);
r = roots(c);
j = (abs(r(:)) <= 1);
r = r(j);
c = real(poly(r));
c .*= (-1).^(0:(N-1)); #if this complains, then root finding has probably failed
freqz(c)
zplane(c)
printf('%f, ', flip(-c(2:end))), printf('\n'); #tobalt's format

Він починається з вікна Дольфа-Чебишева як коефіцієнтів, об'єднує його з собою, щоб подвоїти нулі функції передачі, додає до середнього крана число, яке "піднімає" частотну характеристику (вважаючи середній кран як нульовий час), так що воно скрізь позитивне, знаходить нулі, видаляє нулі, які знаходяться поза одиничним колом, перетворює нулі назад у коефіцієнти (провідний коефіцієнт poly- завжди 1), і перевертає знак кожного другого коефіцієнта, щоб зробити фільтр високопрохідним . Результати (старшої, але майже еквівалентної версії) сценарію виглядають багатообіцяючими:

Частотна характеристика
Малюнок 9. Частотна характеристика фільтра (більш стара, але майже еквівалентна версія) вищевказаного сценарію.

Сюжетно-нульовий сюжет
Малюнок 10. Графік полюса-нуль фільтра (старший, але майже еквівалентний варіант) вищевказаного сценарію.

Коефіцієнти з (стара , але майже еквівалентна версія) вище сценарію в позначеннях: {0.357662, -2.588396, 9.931419, -26.205448, 52.450624, -83.531276, 108.508775, -116.272581, 102.875781, -74.473956, 43.140431, -19.131434, 5.923468}. Цифри великі, що може призвести до чисельних проблем.

Октавна реалізація формування шуму

Нарешті, я власноруч здійснив формування шуму в Octave і не маю проблем, як ви. Виходячи з нашого обговорення в коментарях, я думаю, що обмеженням у вашій реалізації було те, що спектр шуму оцінювали за допомогою прямокутного вікна з назвою "без вікон", яке розсипало високочастотний спектр на низькі частоти.

pkg load signal
N = length(c);
M = 16384; #signal length
input = zeros(M, 1);#sin(0.01*(1:M))*127;
er = zeros(M, 1);
output = zeros(M, 1);
for i = 1:M
  A = input(i) + er(i);
  output(i) = round(A + rand() - rand());
  for j = 2:N
    if (i + j - 1 <= M)
      er(i + j - 1) += (output(i) - A)*c(j);
    endif
  endfor
endfor
pwelch(output, max(nuttallwin(1024), 0), 'semilogy');

введіть тут опис зображення
Рисунок 11. Спектральний аналіз квантового шуму з наведеної вище Октави здійснення формування шуму для постійного нульового вхідного сигналу. Горизонтальна вісь: нормалізована частота. Чорний: відсутність шумового формування ( c = [1];), червоний: ваш оригінальний фільтр, синій: фільтр із розділу "Сценарій Октави для дизайну фільтра".

Інша часова область тесту
Рисунок 12. Виведення часової області від вищевказаної октави здійснення формування шуму для постійного нульового вхідного сигналу. Горизонтальна вісь: номер вибірки, вертикальна вісь: значення вибірки. Червоний: ваш оригінальний фільтр, синій: фільтр із розділу "Сценарій Октави для дизайну фільтра".

Більш екстремальний фільтр для формування шуму (синій) призводить до дуже великих квантованих значень вибірок вихідних даних навіть для нульового введення.


1
@MattL. Спочатку я неправильно подумав, що у тобальту є полюсний фільтр. Я переписав свою відповідь, коли зрозумів, що це фільтр FIR з першим коефіцієнтом 1. Також, як повідомляють Герзон-Крейвен, фільтр повинен бути мінімальною фазою, щоб бути оптимальним, а оптимізовані коефіцієнти тобальту також дають фільтр мінімальної фази. Ці вимоги еквівалентні тим, що мають коефіцієнти полюсних фільтрів IIR, тому я пропоную запозичити методи проектування. Стандартний IIR також буде варіантом.
Оллі Ніемітало

1
Я виділив помилку: моя реалізація створює таку ж форму хвилі (за часом), як і ваша. Однак функція Abs [Фур’є [[хвиля]], здається,
наштовхується

1
@ Olli Niemitalo Добре, здається, що FFT в октаві використовує автоматичне вікно, можливо? Після застосування вікна Ханна до форми хвилі я можу отримати "правильні" FFT. Я коротко перевіряю цілісність такого підходу і, врешті-решт, продовжуватиму навчатись та опублікувати результат. Дякую за всі ваші зусилля. Я позначив вашу відповідь як відповідь.
тобальт

1
@ robertbristow-johnson Я думаю, що це все послідовно. Я вилучив рівняння, де H (z) був для рекурсивного фільтра з цифрою 1. Але це фільтр FIR у корпусі тобальту. Я підозрюю, що ви можете подумати, що він стає рекурсивним фільтром, оскільки є цикл зворотного зв'язку. Але квантоване квантування знаходиться в циклі, роблячи свою річ, прорізаючи шлях від виходу фільтра до залишку.
Оллі Ніемітало

1
Також Lipshitz та ін. У 1991 році використовуються і з протилежними значеннями, і мене тут навчали на dsp.stackexchange.com за те, що він нестандартний. ab
Оллі Ніемітало
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.