реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
Rev0.0
сообщение Nov 16 2014, 16:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 3-05-13
Пользователь №: 76 718



Привет!
Задача следующая. У меня есть набор экспериментальных данных x(t) и y(t). По этим данным я в Matlab могу получить передаточную функцию системы (коэффициенты). Допустим система с высокой достоверностью описывается моделью второго порядка с ПФ: W(s) = (Kp * e^-sL) / ((sT1 + 1) * (sT2+1)).
Теперь мне нужо реализовать цифровой фильтр с этой ПФ, на входе которого будет некий сигнал x(t), а на выходе y(t).
Подскажите какие шаги нужно выполнить? В целом, для стандартных моделей 1-ого и 2-ого порядка думаю должны быть готовые решения (уравнения), как они выглядят, где почитать?
Спасибо.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Nov 17 2014, 06:30
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Честно говоря, не совсем понятно, что именно вы спрашиваете, вы же уже сами все шаги назвали. По данным получить ПФ, потом ее реализовать и по входным данным получить выходные. Какие именно шаги вы спрашиваете?
Go to the top of the page
 
+Quote Post
Rev0.0
сообщение Nov 17 2014, 07:23
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 3-05-13
Пользователь №: 76 718



Дело в том, что я знаю только в общих чертах, а вот как конкретно это делать на практике не в курсе.
Подробнее.
У меня есть массивы данных 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-а к коду?
Я на пальцах вроде понимаю, что это либо фильтр (КИХ, БИХ) должен быть, либо дифф.ур. нужно численно решать. Вот и нужны подсказки по дальнейшим шагам.

Сообщение отредактировал Rev0.0 - Nov 17 2014, 07:24
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 17 2014, 08:44
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Rev0.0 @ Nov 17 2014, 15:23) *
Вот и нужны подсказки по дальнейшим шагам.

гугл на фразу "синтез цифрового фильтра на основе аналогового прототипа в матлаб" выдает неплохую доку по синтезу ЦФ (на русском) в первой ссылке


--------------------
Go to the top of the page
 
+Quote Post
Rev0.0
сообщение Nov 17 2014, 18:38
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 3-05-13
Пользователь №: 76 718



des00, спасибо, действительно полезный документ, почитаю, поразбираюсь.
Go to the top of the page
 
+Quote Post
Hose
сообщение Jan 8 2015, 13:52
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 7-01-15
Пользователь №: 84 450



Если линейное, то можно в частотной области:

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)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 05:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016