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