![]() |
|
![]() ![]() ![]() |
|
cucutnog |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.11.2012 Репутация: нет Всего: нет |
Добрый день.
Постановка задачи: На входе блока в Simulink матрица размером G[3][4] и две константы, имеющие смысл номера строки (i) и столбца (j), соответственно. На выходе блока элемент матрицы G(i,j). Подавая различные константы в пределах размера матрицы, меняется на выходе G(i,j). Суть проблемы: Если смоделировать такое устройство с помощью блока MATLAB Function, прописав туда простейший m-код
все будет работать как надо Но если реализовать эту задачу с помощью С MEX S-function, прописав в .с
И создав файл .mexw32 с помощью Legacy code tool, я получаю на выходе не тот элемент, номер которого я заказывал с помощью констант i и j, а другой элемент, принадлежащий матрице G. Конечно, я учитываю то, что нумерация в С идет с 0, а не с 1 , как в Матлабе. Поясняющий рисунок, на котором сверху эта задача решается в MATLAB Function, а снизу в С MEX S-function. Матрица одна и там и там, разумеется. ![]() Задавая различные i и j получаю следующие результаты на выходе С MEX S-function i j G(i,j) [0] [0] 1 [1] [0] 6 [2] [0] 11 [3] [0] 6 [0] [1] 5 [0] [2] 9 [0] [3] 2 [0] [4] 6 [0] [5] 10 Что интересно: Если менять только номер j-ого элемента, а i=0, то выпадают числа матрицы последовтаельно перебирая мтарицу сверху вниз и слева направо. Даже при условии, что в моей мтарице j<4, можно ввести j>4 и получить число на выходе. Возможно что-то в самом файле S-функции, который я компилирую не так. Есть опасения по-поводу указателей.
Кто разбирается,скажите,пожалуйста,в чем может быть дело. |
||||||
|
|||||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Математические пакеты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |