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

 
 
> Как интегрировать алгоритм в m файле в симулинк?, Использовать итерационный алгоритм заданый кодом в модели
des00
сообщение Jan 25 2010, 13:43
Сообщение #1


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

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



Добрый день!

Есть модель выравнивания двух потоков данных, на основе их корреляции в симулинке. В ручном режиме, с помощью фильтров с переменной задержкой и slider gain я могу выровнять потоки в ручную. Но хотелось бы сделать автоматически. Сложность у меня вот в чем. Алгоритм выравнивания поделен на 2 этапа :
1. Поиск средней задержки, на основе поиска максимума корреляционной функции с помощью перебора.
2. Удержания выравнивания с помощью метода градиентного спуска.
Кодом такая конструкция описывается элементарно, два цикла, переход из одного в другой по условию. Но вот как перенести это в симулинк? Делать графический аналог (рисовать КА, делать case и т.д.) нет никакого желания, а использование встроенных матлабовских функций ограниченно тем, что от вызова к вызову переменные функции не сохраняются. Переносить всю модель в m файлы тоже не хотелось бы, все таки симулинк вещь более наглядная %)
Можно было бы использовать ступенчатую функцию и переключаться между двумя алгоритмами, но во первых время 1 ого этапа может варьироваться (от размера шага), а во вторых коряво это как то %)

Может есть более красивый способ?

Спасибо.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
petrov
сообщение Jan 25 2010, 15:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Несколько параллельно работающих корреляторов на разные задержки, поиск максимального значения, дробная задержка через параболу по трём точкам...
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 25 2010, 15:45
Сообщение #3


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

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



Цитата(petrov @ Jan 25 2010, 09:13) *
Несколько параллельно работающих корреляторов на разные задержки, поиск максимального значения, дробная задержка через параболу по трём точкам...

но в таком случае это будет очень далеко от железа, которое я хочу промоделировать. даже такой простой алгоритм должен нормально работать, в последовательном режиме. Планируется запустить его на небольшом проце. Но вот как промоделировать последовательный алгоритм, с сохранением состояния в симулинке мне не понятно %(


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Jan 25 2010, 16:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Jan 25 2010, 18:45) *
но в таком случае это будет очень далеко от железа, которое я хочу промоделировать. даже такой простой алгоритм должен нормально работать, в последовательном режиме. Планируется запустить его на небольшом проце. Но вот как промоделировать последовательный алгоритм, с сохранением состояния в симулинке мне не понятно %(


Непонятно в чём проблема. Cуть алгоритма сможете отладите в симулинке, а уж как потом делать в железе другая задача, ну вот например FFT в симулинке это комбинационная схема, это же не значит что я буду в FPGA делать такую же комбинационную схему.

Можно ещё свои блоки писать - S-функции.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 25 2010, 16:35
Сообщение #5


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

Группа: Модераторы
Сообщений: 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 например или программа на сях для проца %)


--------------------
Go to the top of the page
 
+Quote Post
petrov
сообщение Jan 25 2010, 17:04
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(des00 @ Jan 25 2010, 19:35) *
т.е. есть КА, который ждет событий от железа, соответствующим образом их обрабатывает и управляет этим железом. Кодом такой алгоритм описывается элементарно. Но вот реализация его в симулинке, с синхронизацией к окружению у меня вызывает вопрос. Embedded Matlab Function не сохраняет состояния, она каждый раз начинается с начала. Должен же быть какой то механизм в симулинке что бы моделировать такие системы.


Есть в симулинке stateflow как раз для симуляции конечных автоматов, но уж больно тормозная штука(правда давно пробовал может что не понял). Для Embedded Matlab Function(тоже кстати модели подтормаживает) можно память держать снаружи. Ну и S-функции там что угодно можно написать и со временем работать.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 25 2010, 17:08
Сообщение #7


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

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



Цитата(petrov @ Jan 25 2010, 11:04) *
Есть в симулинке stateflow как раз для симуляции конечных автоматов, но уж больно тормозная штука(правда давно пробовал может что не понял).

не люблю я рисование, кодом оно понятнее и ловчее %)
Цитата
Для Embedded Matlab Function(тоже кстати модели подтормаживает) можно память держать снаружи.

делал для простых случаев (одна переменная), работает, но как то это через одно место.... %)
Цитата
Ну и S-функции там что угодно можно написать и со временем работать.

спасибо, пороюсь в хелпе насчет них подробнее


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jan 26 2010, 06:40
Сообщение #8


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(des00 @ Jan 25 2010, 19:08) *


Посмотрите здесь ссылка
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 07:18
Рейтинг@Mail.ru


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