Я пишу небольшое приложение C, которое запускает скрипт Matlab (файл .m). Мне нужно обменять некоторые переменные, и я не знаю, как получить массив символов, который существует в Matlab.Получение переменной MATLAB (строка) из C
Я делаю что-то вроде этого:
enter code here
result = engGetVariable(ep,"X");
if (!result)
{
printf ("Error...");
exit -1;
}
int n = mxGetN(result);
char *varx = NULL;
memcpy(varx, mxGetData(result),n*sizeof(char));
Это не работает. Кто-нибудь знает, как получить строку Matlab в C? Я прочитал документацию Matlab о engGetVariable() и представленном примере, но все это разъясняет меня.
Хорошо, это проблема (позвольте мне сказать, «отсутствие кофе» ;-)) Но, объявляя varx, как вы сказали, или «символ varx [1000]» Есть еще проблемы. Я отлаживал, и я обнаружил, что если у меня есть переменная в Matlab, как «X =« Привет, ребята! » при возврате его в CI имеет следующий вид: varx [0] = 'H' varx [1] = '\ 0' varx [2] = 'e' varx [3] = '\ 0' .. и т. д. Возможно, это потому, что в Matlab символы имеют 16 бит ... и я работаю с 8 бит. Выполнение в Matlab «X = int8 (« Привет, люди! »), Похоже, работает, но с некоторыми символами не работает. Спасибо! – Hamming
Да, ты прибил его. он возвращает вам utf8, так как вы получаете ascii, первые 8 бит будут одинаковыми, поэтому пропуск любого другого символа будет работать. вы также можете попробовать использовать wchar_t и сделать это с широким характером, но это может быть не обязательно для ваших целей. (wchar_t == char * 2) – 2010-04-22 13:28:16
Я делаю преобразование в Matlab (что проще :-) to uint8 и работает как шарм! – Hamming