Перейти к содержанию
    

andyp

Участник
  • Постов

    546
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент andyp


  1. У нелинейных искажений в дециматорах две причины 1. Заворачивание спектра (folding) 2. Усечение разрядности Со вторым, очевидно, чем меньше усекаете, тем лучше. Что касается первого, то тут все решается дизайном цепочки. Я обычно сначала использую CIC без компенсации. В моих приложениях мне становится недостаточно подавления имиджей до того, как завал АЧХ становится проблемой. CIC иногда разбиваю на два каскада, когда не хочется сильно раздувать разрядность аккумуляторов на высокой частоте дискретизации. При этом получаю немного больше проблем с причиной 2, конечно. После CIC ставлю в зависимости от приложения разные варианты FIR дециматоров. Так как частота дискретизации уже низкая, то можно себе позволить более широкие шины между каскадами и реже усекать разрядность. Точные значения факторов децимации, тип и каскадная структура FIR дециматора определяется требованиями к общему фактору децимации, ширине рабочей полосы и допустимому уровню нелинейных искажений в полосе.
  2. У ошибки округления спектр линейчатый так как сигнал, который округляется, периодический. Тип усечения-округления (варианты round, floor, ceil, это всё) будет влиять только на высоту спуров. Сами спуры всё равно появятся на кратных входному колебанию частотах. Дальше они будут заворачиваться от новой частоты дискретизации от стадии к стадии, что еще разных гармоник даст. Я бы первые стадии в виде пары каскадов CIC с фактором децимации раз в 16-32-64 (в зависимости от требуемой выходной полосы) делал , чтобы не иметь ошибок округления при каждой децимации в 2 раза.
  3. ИМХО Недофильтрованная ошибка округления предыдущего каскада заворачивается в полезную полосу при каждой децимации.
  4. Я про случай различения двух гипотез - два нормальных распределения с одинаковой дисперсией и разными средними (одно из них - 0) и подумал. АМ можно и нужно убить, если есть возможность, выбрав правильную полосу фильтра в детекторе после нелинейности. Т.е. в цепочке ADC-DDC-LPF-ABS-CMP-TIMER еще одного LPF после ABS не хватает имхо. Известную нелинейность можно учесть при формировании порогов. Но это я так. Разумеется, ни на чем не настаиваю.
  5. По уму Вам бы среднее значение сигнала M на вершине импульса оценивать. Для детекции спада использовать порог M-th. th - это порог, который Вы для обнаружения фронта использовали.
  6. Да, был не прав. рекурсия выглядит как R_n = l*R_n-1 + X_n. Тогда все сработает.
  7. С l = 1 работать не будет. Оценки корр. функции считаются по следующей формуле R_n = l*R_n-1 + (1-l)*X_n Фактически это экспоненциальное усреднение БИХ фильтром первого порядка. В зависимости от l серединка окна будет браться с большими весами, а к краям окна веса будут спадать. Такая форма получения оценки КФ зашита внутрь RLS и именно она позволяет считать обновления сразу для обратной матрицы.
  8. Т.е. МНК по доступным данным vs RLS по доступным данным? Все эти excess MSE дают нижнюю границу оценки ошибки и асимптотику. На коротких выборках и то и то будет плохо имхо (ну т.е. хуже чем эта граница). Давайте посмотрим на оценку КФ в случае RLS с параметром lambda = l и квадратами входов X_i В случае усреднения двух отсчетов будем иметь l*X_1 + (1-l)*X_2 против 0.5*X_1 + 0.5 *X_2 для MHK Для трех l^2 *X_1 + l*(1-l)*X_2 + (1-l)*X_3 против 1/3*X_1 + 1/3*X_2 + 1/3*X_1 для MHK Справа - наилучшая оценка КФ, которую можно получить по доступным данным. Имхо, то что слева будет хуже того, что справа, пока не усредняем K*(1/(1-l)) отсчетов, где K - примерно 10 (каждые 1/(1-l) отсчетов excess MSE RLS убывает в e раз)
  9. Ух, кажется понял о чем Вы. МНК от RLS отличается тем, что в одном случае (МНК) для оценки используется невзвешенная сумма n отсчетов, в случае RLS - всегда взвешенная (лямбда меньше 1 в терминах Вашей книжки) . Ну т.е. в случае MHK используются все входные отсчеты с одинаковым весом 1/n, в случае RLS для усреднения используется БИХ фильтр с параметром лямбда. Поэтому даже в асимптоте (n->Бесконечность)там перед оценками множитель вида (1-lambda)/(1+lambda) будет и соответствующая ошибка. MHK при бесконечном усреднении и эргодических процессах на входе даст стремящуюся к 0 по отношению к винеровскому фильтру ошибку. При lambda близкой к 1, n много большей N (длина фильтра в Вашей книжке) для эргодических процессов на входе множитель (1+lambda)/(1-lambda) будет сколь угодно близок к 1 и ошибка будет примерно одинаковой.
  10. Имхо фильтрация Винера предполагает точное знание статистик второго порядка. LMS, RLS используют входные данные для оценки требуемых корреляций. В случае стационарных процессов и для установившегося режима (когда алгоритм сбежался) для LMS, RLS имеем веса фильтра как случайный процесс с некой дисперсией и мат. ожиданием, равным винеровскому решению. Это приводит к дополнительному по отношению к винеровскому решению шуму на выходе. Шум оценивают как excess MSE (разность мощности шума в установившемся режиме и шума винеровского решения). В случае LMS excess MSE зависит от параметра сходимости и следа корр. матрицы. В случае RLS (на сколько помню) от параметра forgetting factor при оценке элементов корр. матрицы. От следа не зависит. В принципе, для каждого стационарного входа можно так подобрать параметры RLS и LMS, чтобы в установившемся режиме была одинаковая дисперсия. Характер сходимости будет разный. PS подробности можно найти в Behrouz Farhang-Boroujeny, Adaptive Filters: Theory and Applications
  11. дистр для windows вроде включает нужные пакеты по умолчанию pkg list должен показать что уже стоит
  12. https://www.gnu.org/software/octave/#install или https://ftp.gnu.org/gnu/octave/windows/ см. 4.2.1
  13. Нет. PS Если у Вас стандартный ФНЧ, ФВЧ или полосовик, предназначенный для фильтрации действительного сигнала, то с результатами синтеза фильтра что-то не так. В октаве нужное есть в пакете signal. Код доступен. В матлабе реализацию этих функций тоже можно посмотреть.
  14. Ваши нули и полюса не образуют комплексно сопряженных пар. Это требуется для того, чтобы числитель и знаменатель передаточной функции имели действительные коэффициенты. Если это устраивает, то группируйте нули и полюса в пары и считайте многочлены числителя и знаменателя как (z - pole1)*(z - pole2). Только коэффициенты биквадов получатся комплексными. А так, лучше чем-то типа octave или matlab воспользоваться для синтеза фильтра. Там же есть функция tf2sos для нужного Вам преобразования. Ну и можно вот эту тему посмотреть https://electronix.ru/forum/index.php?showt...=124301&hl=
  15. Что значит исправить? В лучшем случае удастся отфильтровать те гармоники, которые завернулись в полосу сигнала при дискретизации. Только проще сразу формировать сигнал как сумму гармоник, которые укладываются в половину частоты дискретизации. Среднеквадратическая ошибка в этом случае будет минимальна.
  16. Спектр треугольника содержит нечетные гармоники фундаментальной частоты (в Вашем случае еще и постоянку), амплитуда которых убывает как квадрат их номера. Для того, чтобы синтезировать более-менее нормальны треугольник нужно взять хотя бы 5 гармоник (см https://en.wikipedia.org/wiki/Triangle_wave). Это даст полосу сигнала равную 10*(1/Период). Соответственно, для дискретизации такого сигнала требуется примерно 20-ти кратная частота дискретизации.
  17. Наткнулся тут на хабре на перевод одной главы из книжки Хамминга: https://habrahabr.ru/post/348264/ Перевод так себе, но сама по себе тема, которую поднимает автор, интересная для тех, кто интересуется помехоустойчивым кодированием и системами связи. Вопреки интуиции, в n-мерном евклидовом пространстве с увеличением размерности n: - объем шара единичного радиуса стремится к 0 - практически весь объем шара сосредоточен в тонком слое у поверхности - диагонали n-мерного куба становятся практически перпендикулярными ребрам (a) - из (a) следует, что в n-мерном пространстве для любого вектора можно выбрать 2^n-1 "практически" ортогональных векторов - при n>= 10 сфера, касающаяся сфер, вписанных в углы гиперкуба начинает "вытекать" за границы гиперкуба В общем здорово, чо.
  18. Это каузальностью вроде называется, ну да черт с ним, весь спор-то схоластический, имхо. Мы ж все ПФ с комплексными коэффициентами когда надо пользуемся, например когда с комплексными огибающими возимся. На практике матлаб ожидает передаточных функций с действительными коэффициентами. Этим и объясняется поведение zp2tf.
  19. Да я собственно и не против - на своей особой правоте и не настаиваю. Я понимаю это все следующим образом: 1. Если у дифура комплексный коэффициент, то действительного решения может не оказаться даже при действительной функции-входе. Это то, что я понимаю под физической нереализуемостью. 2. Система с комплексной ПФ - подмножество среди систем с двумя входами-выходами. Их в общем случае матрицей описывают, хотя в этом частном случае достаточной просто комплексной ПФ.
  20. В физическом мире это два входа(выхода) получается. Я привел пример системы, у которой один вход и фактически два выхода из-за комплексной передаточной функции. Полностью описать такую систему без второго выхода нельзя даже для воздействий на один вход. В книжках обычно ограничиваются одним выходом, поэтому ПФ считают функцией с действительными коэффициентами. Матлаб той же договоренности придерживается. PS полезности комплексных ПФ и комплексных сигналов я не отрицаю совсем. Это termit мой первый пример не понравился тем, что фильтр неустойчивый был. Второй пример - устойчивый фильтр, в чем можно убедиться, выполнив zplane(1,[1 (0.5+ 0.25j)])
  21. Пожалуйста, вот пример устойчивого фильтра с АЧХ, не являющейся четной функцией. freqz(1,[1 (0.5+ 0.25j)], 'whole') zplane(1,[1 (0.5+ 0.25j)]) Я собственно про это и хотел сказать - сунули вещественный сигнал - вылез комплексный. С физической реализуемостью проблема. Тут впору о 4х-полюснике (TITO) говорить. Поэтому в книжках как правило диф. уравнения с вещественными коэффициентами рассматривают. Матлаб, вон, тоже ожидает комплексно сопряженные пары нулей и полюсов или вещ. значения. Мнимая часть передаточной функции просто отбрасывается. То что система перестает быть LTI я не писал. Я писал, что по классике коэфф.-ты передаточной функции - вещественные.
  22. Классические - описывающие поведение физически реализуемых систем, те что описывается дифф. или разностными уравнениями с вещественными коэффициентами, о которых в большинстве книжек пишут. Я выше привел пример системы с комплексной передаточной функцией, имеющей физически нереализуемый выход при физически реализуемом входе. Вы это про что?
  23. Да, имхо. Коэффициенты передаточной функции предполагаются вещественными если охота остаться в рамках классических LTI систем. Отсюда и real() в коде zp2tf (см. type zp2tf). Если коэффициенты передаточной функции - комплексные, то придется столкнуться с рядом неожиданных эффектов - например, попробуйте freqz(1,[1 (1+8j)], 'whole'). АЧХ перестала быть чётной. упс. Можно почитать например http://portal.research.lu.se/portal/files/...ACC_0939_FI.pdf если тянет к странному.
  24. У меня было фактически скользящее окно sequence numbers, которые мы принимаем в данный момент. Пакеты с номерами вне окна просто отбрасываются. Размер окна определяется допустимой задержкой. Я просто предыдущий пакет повторял чтобы меньше хрюкало. У меня по 48 8 kHz отсчетов в пакете передавалось (пакеты по 48 байт 64 kbps аудио с логарифмической компрессией). Если потеряно несколько пакетов - начинал подавать нули на выход. Полезно вести счетчики отброшенных по seq number пакетов - если их становится все больше, то это знак того, что надо увеличить буффер.
  25. На самом деле подавление эха где-то до 150 ms задержки нормально работает. Большие задержки нужны чтобы с тем, что пакеты на источник приходят не в том порядке, в каком были посланы бороться (reordering). А с джиттером адаптивными методами борются - адаптивно подстраивают глубину буфера под трафик, оценивая параметры распределения количества пакетов в буфере. Правда, сначала свой "кварц" подтягивают под среднюю скорость поступления отсчетов из сети (ну или еще как компенсируют расхождение тактовых частот приемника и передатчика - можно повторять-вырезать кусочки сигнала, можно ресамплинг с управляемым коэффициентом передискретизации), а уже потом минимизируют глубину jitter buffer. Эти технологии в TDMoverIP используются. Там и можно почитать. Если всё это в своей сети предполагается использовать, то jitter можно заранее наперед оценить.
×
×
  • Создать...