Rev0.0 0 16 ноября, 2014 Опубликовано 16 ноября, 2014 · Жалоба Привет! Задача следующая. У меня есть набор экспериментальных данных x(t) и y(t). По этим данным я в Matlab могу получить передаточную функцию системы (коэффициенты). Допустим система с высокой достоверностью описывается моделью второго порядка с ПФ: W(s) = (Kp * e^-sL) / ((sT1 + 1) * (sT2+1)). Теперь мне нужо реализовать цифровой фильтр с этой ПФ, на входе которого будет некий сигнал x(t), а на выходе y(t). Подскажите какие шаги нужно выполнить? В целом, для стандартных моделей 1-ого и 2-ого порядка думаю должны быть готовые решения (уравнения), как они выглядят, где почитать? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RHnd 0 17 ноября, 2014 Опубликовано 17 ноября, 2014 · Жалоба Честно говоря, не совсем понятно, что именно вы спрашиваете, вы же уже сами все шаги назвали. По данным получить ПФ, потом ее реализовать и по входным данным получить выходные. Какие именно шаги вы спрашиваете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rev0.0 0 17 ноября, 2014 Опубликовано 17 ноября, 2014 (изменено) · Жалоба Дело в том, что я знаю только в общих чертах, а вот как конкретно это делать на практике не в курсе. Подробнее. У меня есть массивы данных 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-а к коду? Я на пальцах вроде понимаю, что это либо фильтр (КИХ, БИХ) должен быть, либо дифф.ур. нужно численно решать. Вот и нужны подсказки по дальнейшим шагам. Изменено 17 ноября, 2014 пользователем Rev0.0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 ноября, 2014 Опубликовано 17 ноября, 2014 · Жалоба Вот и нужны подсказки по дальнейшим шагам. гугл на фразу "синтез цифрового фильтра на основе аналогового прототипа в матлаб" выдает неплохую доку по синтезу ЦФ (на русском) в первой ссылке Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rev0.0 0 17 ноября, 2014 Опубликовано 17 ноября, 2014 · Жалоба des00, спасибо, действительно полезный документ, почитаю, поразбираюсь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hose 0 8 января, 2015 Опубликовано 8 января, 2015 · Жалоба Если линейное, то можно в частотной области: 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) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться