Определение среднего в реальном времени, запись константы

Обсуждение вопросов, связанных с Simulink

Модератор: Admin

Антон Стелюк
Пользователь
Сообщения: 13
Зарегистрирован: Чт сен 23, 2004 3:28 pm
Контактная информация:

Определение среднего в реальном времени, запись константы

Сообщение Антон Стелюк » Чт сен 23, 2004 4:03 pm

Добрый день!
При моделировании в Simulink, у меня возникли две проблемы:
1) как определить среднее значение вектора данных, используя ТОЛЬКО 5 его последних значений для определения среднего (функция mean(A) определяет среднее значение вектора для всех элементов) в режиме реального времени при моделировании в Simulink?
2) в модели в течение 30 с у меня выполняются расчеты коэффициента коррекции (п. 1), причем последняя величина (когда время больше 30 с) должна быть постоянной. Как можно организовать запись величины (как константу), ЧТОБЫ ОНА НЕ ИЗМЕНЯЛАСЬ ПРИ МОДЕЛИРОВАНИИ (на временном промежутке от 31 до 300 с)?
Я бьюсь над этими вопросами уже неделю.
Премного буду благодарен за ответ.
С уважением, Стелюк Антон.

chernykh
Эксперт
Сообщения: 4526
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение chernykh » Чт сен 23, 2004 5:00 pm

1. Можно с помощью блока 'Selector' выделить последние 5 элементов, а далее - известно.
2. Поместить нужные блоки в управляемую подсистему (настроив соответствующим образом выходной порт). После снятия управляющего сигнала на выходном порту будет зафиксировано последнее значение.

Черных И.В.

Антон Стелюк
Пользователь
Сообщения: 13
Зарегистрирован: Чт сен 23, 2004 3:28 pm
Контактная информация:

Сообщение Антон Стелюк » Пт сен 24, 2004 9:32 am

Большое спасибо Вам за ответ.
Стелюк Антон, аспирант.

Prosto_Mityan
Пользователь
Сообщения: 8
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение Prosto_Mityan » Сб сен 25, 2004 2:39 am

Можно еще использовать буфер длиной 5 с перекрытием (overlap) 4, к которому уже применять mean(A), а для записи - triggered write to file

С уважением, Еньков Дмитрий

sandy
Эксперт
Сообщения: 5601
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение sandy » Пн окт 04, 2004 12:35 pm

Еще проще - блок дискретного фильтра (Discrete Filter),

Numerator = ones(1,5)/5
Denominator = 1

С уважением

Александр Сергиенко

Антон Стелюк
Пользователь
Сообщения: 13
Зарегистрирован: Чт сен 23, 2004 3:28 pm
Контактная информация:

Сообщение Антон Стелюк » Пн окт 04, 2004 9:45 pm

Большое Вам всем спасибо за ответы.
С уважением, Стелюк Антон, аспирант НТУУ "КПИ".