| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Математические пакеты > [MATLAB] MATLAB Function и С MEX S-function |
| Автор: cucutnog 19.11.2012, 20:37 | ||||||
| Добрый день. Постановка задачи: На входе блока в 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-функции, который я компилирую не так. Есть опасения по-поводу указателей.
Кто разбирается,скажите,пожалуйста,в чем может быть дело. |