Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 6

MATLAB Function и С MEX S-function при работе с матрицами

19.11.2012, 21:12. Показов 1541. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Постановка задачи:

На входе блока в Simulink матрица размером G[3][4] и две константы, имеющие смысл номера строки (i) и столбца (j), соответственно. На выходе блока элемент матрицы G(i,j). Подавая различные константы в пределах размера матрицы, меняется на выходе G(i,j).

Суть проблемы:

Если смоделировать такое устройство с помощью блока MATLAB Function, прописав туда простейший m-код

Code
1
2
3
4
5
function C = fcn(i,j,G)
 
C = G(i,j); 
 
end
все будет работать как надо


Но если реализовать эту задачу с помощью С MEX S-function, прописав в .с

Code
1
2
3
4
5
6
7
#include "doubleIt.h"
 
void fcn (int i,  int j, double G[3][4], double *C)
 
{
*C = G[i][j];
}
И создав файл .mexw32 с помощью Legacy code tool, я получаю на выходе не тот элемент, номер которого я заказывал с помощью констант i и j, а другой элемент, принадлежащий матрице G.
Конечно, я учитываю то, что нумерация в С идет с 0, а не с 1 , как в Матлабе.

Поясняющий рисунок, на котором сверху эта задача решается в MATLAB Function, а снизу в С MEX S-function. Матрица одна и там и там, разумеется.

http://i.ganjafoto.ru/1/93/78/1937843.jpg


Задавая различные 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-функции, который я компилирую не так. Есть опасения по-поводу указателей.


Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static void mdlOutputs(SimStruct *S, int_T tid)
{
  /*
   * Get access to Parameter/Input/Output/DWork/size information
   */
  int16_T *u1 = (int16_T *) ssGetInputPortSignal(S, 0);
  int16_T *u2 = (int16_T *) ssGetInputPortSignal(S, 1);
  real_T *u3 = (real_T *) ssGetInputPortSignal(S, 2);
  real_T *y1 = (real_T *) ssGetOutputPortSignal(S, 0);
 
  /*
   * Call the legacy code function
   */
  fcn( *u1, *u2, u3, y1);
}

Кто разбирается,скажите,пожалуйста,в чем может быть дело.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2012, 21:12
Ответы с готовыми решениями:

Ошибка no matching function for call to при работе с файлом
возникает ошибка no matching function for call to 'getline(std::string&amp;, std::string&amp;)' #include &lt;iostream&gt; #include &lt;string&gt;...

Ошибка при работе с файлами: C4996: 'fopen': This function or variable may be unsafe
Помогите пожалуйста. писал программу, по данному заданию. вроде как все написал, но с файлами получился косяк. не могу разобраться в чем...

FUN must be a function, a valid string expression, or an inline function object
Здраствуйте, нужна помощь. clear all; close all; Scr_data_C; Scr_data_L; fv = 10:10:10000; Zc = cond(dataC,fv); Zl =...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2012, 21:12
Помогаю со студенческими работами здесь

Function or interface marked as restricted, or the function uses an Automation type not supported
Добрый день! Столкнулась с неожиданной проблемой: Объявляю переменные для программы глобально. 'Данные заказчика Dim Name...

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend при компиляции. что делать?

FUNCTION new.COUNT does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual
Ругаеться на COUNT , что тут не так ? $result = mysql_query(&quot;SELECT COUNT (`model`.`cat_id`) FROM ...

Matlab: S-function error
Доброго времени суток! При моделировании S-функции в Simulink сталкнулась с проблемой в параметрах самой функции. При запуске...

Call to undefined function '_beginthreadex' in function main()
Здесь реализуется задача о 5-ти китайских философах, обедающих за столом #include&lt;windows.h&gt; //подключаем библиотеки ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru