Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определить выходной сигнал, зная передаточную функцию
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Rev0.0
Привет!
Задача следующая. У меня есть набор экспериментальных данных x(t) и y(t). По этим данным я в Matlab могу получить передаточную функцию системы (коэффициенты). Допустим система с высокой достоверностью описывается моделью второго порядка с ПФ: W(s) = (Kp * e^-sL) / ((sT1 + 1) * (sT2+1)).
Теперь мне нужо реализовать цифровой фильтр с этой ПФ, на входе которого будет некий сигнал x(t), а на выходе y(t).
Подскажите какие шаги нужно выполнить? В целом, для стандартных моделей 1-ого и 2-ого порядка думаю должны быть готовые решения (уравнения), как они выглядят, где почитать?
Спасибо.
RHnd
Честно говоря, не совсем понятно, что именно вы спрашиваете, вы же уже сами все шаги назвали. По данным получить ПФ, потом ее реализовать и по входным данным получить выходные. Какие именно шаги вы спрашиваете?
Rev0.0
Дело в том, что я знаю только в общих чертах, а вот как конкретно это делать на практике не в курсе.
Подробнее.
У меня есть массивы данных x(t) и y(t), допустим 200 точек с дискретом 5 мс. Я их загоняю в Matlab в System Identification Tool. Выбираю тип процесса Process Models, 2 полюса + интегратор. Matlab выдает мне коэффициенты Kp, T1, T2, L.
Дальше мне необходимо реализовать функцию на c/c++, на вход которой я буду давать массив значений x(t), а на выходе буду получать y(t) на основе полученной ПФ. Как мне перейти от Matlab-а к коду?
Я на пальцах вроде понимаю, что это либо фильтр (КИХ, БИХ) должен быть, либо дифф.ур. нужно численно решать. Вот и нужны подсказки по дальнейшим шагам.
des00
Цитата(Rev0.0 @ Nov 17 2014, 15:23) *
Вот и нужны подсказки по дальнейшим шагам.

гугл на фразу "синтез цифрового фильтра на основе аналогового прототипа в матлаб" выдает неплохую доку по синтезу ЦФ (на русском) в первой ссылке
Rev0.0
des00, спасибо, действительно полезный документ, почитаю, поразбираюсь.
Hose
Если линейное, то можно в частотной области:

F(y(t)) = F(x(t)) * F(k(t)), F - комплексное фурье, k - искомая импульсная характеристика
Соотв F(k(t)) = F(y(t)) / F(x(t)).
Далее надо дополнить эту функцию, посколку она будет с выбросами и неопределенностями из-за нулей
Ну и след сигнал, например g(t) будет иметь отклик d(t):
F(d(t)) = F(g(t)) * F(k(t))
Останется взять обратное фурье

Во временной:
Необходимо решить матричное уравнение:
Y = K * X
Вот тут могу наврать: K = Y * inv(X)
Или наоборот.
Результат - отчеты искомой импульсной

В дискретах будет так di = sum_po_j_ot_0_do_N(g(i-j)*ki)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.