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

 
 
> Как интегрировать алгоритм в 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

Сообщений в этой теме
- des00   Как интегрировать алгоритм в m файле в симулинк?   Jan 25 2010, 13:43
|- - petrov   Цитата(des00 @ Jan 25 2010, 19:35) т.е. е...   Jan 25 2010, 17:04
|- - des00   Цитата(petrov @ Jan 25 2010, 11:04) Есть ...   Jan 25 2010, 17:08
|- - _Anatoliy   Цитата(des00 @ Jan 25 2010, 19:08) Посм...   Jan 26 2010, 06:40
|- - 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 16:24
Рейтинг@Mail.ru


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