|
Как интегрировать алгоритм в m файле в симулинк?, Использовать итерационный алгоритм заданый кодом в модели |
|
|
|
Jan 25 2010, 13:43
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Добрый день!
Есть модель выравнивания двух потоков данных, на основе их корреляции в симулинке. В ручном режиме, с помощью фильтров с переменной задержкой и slider gain я могу выровнять потоки в ручную. Но хотелось бы сделать автоматически. Сложность у меня вот в чем. Алгоритм выравнивания поделен на 2 этапа : 1. Поиск средней задержки, на основе поиска максимума корреляционной функции с помощью перебора. 2. Удержания выравнивания с помощью метода градиентного спуска. Кодом такая конструкция описывается элементарно, два цикла, переход из одного в другой по условию. Но вот как перенести это в симулинк? Делать графический аналог (рисовать КА, делать case и т.д.) нет никакого желания, а использование встроенных матлабовских функций ограниченно тем, что от вызова к вызову переменные функции не сохраняются. Переносить всю модель в m файлы тоже не хотелось бы, все таки симулинк вещь более наглядная %) Можно было бы использовать ступенчатую функцию и переключаться между двумя алгоритмами, но во первых время 1 ого этапа может варьироваться (от размера шага), а во вторых коряво это как то %)
Может есть более красивый способ?
Спасибо.
--------------------
|
|
|
|
|
 |
Ответов
|
Jan 25 2010, 16:35
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(petrov @ Jan 25 2010, 10:02)  Непонятно в чём проблема. смотрите суть алгоритма на псевдокоде вот в чем Код max_value = 0; max_value_delay = 0; for (int i = min_delay; i < max_delay; i = i + delta_delay) { set_correlation_delay(i); wait_correlation_count_ready(); value = get_corelation_value(); if (value > max_value) { max_value = value; max_value_delay = i; } } set_correlation_delay(max_value_delay); for (;;){ wait_correlation_count_ready(); hill_climb_algorithm(); } т.е. есть КА, который ждет событий от железа, соответствующим образом их обрабатывает и управляет этим железом. Кодом такой алгоритм описывается элементарно. Но вот реализация его в симулинке, с синхронизацией к окружению у меня вызывает вопрос. Embedded Matlab Function не сохраняет состояния, она каждый раз начинается с начала. Должен же быть какой то механизм в симулинке что бы моделировать такие системы. Цитата ну вот например FFT в симулинке это комбинационная схема, это же не значит что я буду в FPGA делать такую же комбинационную схему. тут несколько иная задача. В случае FFT будет математическая эквивалентность, а в мне нужна логическая эквивалентность, которую можно описать простым языком. Как КА на Verilog например или программа на сях для проца %)
--------------------
|
|
|
|
|
Jan 25 2010, 17:08
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(petrov @ Jan 25 2010, 11:04)  Есть в симулинке stateflow как раз для симуляции конечных автоматов, но уж больно тормозная штука(правда давно пробовал может что не понял). не люблю я рисование, кодом оно понятнее и ловчее %) Цитата Для Embedded Matlab Function(тоже кстати модели подтормаживает) можно память держать снаружи. делал для простых случаев (одна переменная), работает, но как то это через одно место.... %) Цитата Ну и S-функции там что угодно можно написать и со временем работать. спасибо, пороюсь в хелпе насчет них подробнее
--------------------
|
|
|
|
Сообщений в этой теме
des00 Как интегрировать алгоритм в m файле в симулинк? Jan 25 2010, 13:43       des00 Цитата(_Anatoliy @ Jan 26 2010, 00:40) По... Jan 27 2010, 11:03 des00 С помощью persistent получилось сделать то, что хо... Jan 29 2010, 12:45 _Anatoliy Цитата(des00 @ Jan 29 2010, 14:45)
завт... Jan 29 2010, 13:59  _Anatoliy Да,странная ошибка,пока не нашёл откуда ноги расту... Jan 30 2010, 13:13   des00 Цитата(_Anatoliy @ Jan 30 2010, 07:13) Да... Jan 30 2010, 13:20    Gate Цитата(des00 @ Jan 30 2010, 16:20) вот и ... Feb 1 2010, 09:51     _Anatoliy Цитата(Gate @ Feb 1 2010, 11:51) Непонятн... Feb 1 2010, 10:39      Gate Цитата(_Anatoliy @ Feb 1 2010, 13:39) Есл... Feb 1 2010, 12:03       _Anatoliy Цитата(Gate @ Feb 1 2010, 14:03) Матлаб д... Feb 1 2010, 13:10 Enthusiast des00, а Вы не пробовали использовать задержку на ... Feb 27 2010, 14:03
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|