Как назвать переменную с индексом для хранения входных данных mxArray? - PullRequest
0 голосов
/ 29 сентября 2019

Я хочу реализовать функцию для перевода входной переменной mxArray (из Matlab) в C ++.Для деталей, если входная переменная является ячейкой, она будет упорядочена по вектору. Как ниже,

for (i = 0; i < nrhs; i++) {    
if (mxIsCell(prhs[i])) {
            mwSize Num = mxGetNumberOfElements(prhs[i]);
            vector<vector<int>> V1(Num);
            mxArray** ptr = new mxArray * [Num];
            mxDouble* p;
            for (i = 0; i < (int)Num; i++) {
                ptr[i] = mxGetCell(prhs[0], i);
                p = mxGetPr(ptr[i]);
                V1.push_back(*p++);
            }
        }
}

В противном случае, если входная переменная является матрицей, я упорядочу ее в массив. Теперь у меня естьпроблема назвать вышеупомянутую переменную.Я должен назвать переменную, соответствующую индексу я.Но я не знаю, как реализовать это в C ++.Не могли бы вы рассказать мне, как это сделать в C ++?

Я немного искал в интернете и обнаружил, что невозможно иметь динамическое имя в C ++.Если это правда, может ли кто-нибудь иметь представление о том, как расположить эти входные переменные, тип которых vector> и двойной массив?Возможно структура?Тогда как инициализировать структуру динамически - это большая проблема для меня.Кроме того, я хочу сделать это, потому что я использую OpenMP, который не может иметь никакой переменной или указателя, связанного с Matlab в параллельных циклах.Это действительно проблема, смущающая меня.

1 Ответ

0 голосов
/ 29 сентября 2019

Функция деления.

Кстати, new mxArray * [Num] - плохая идея.используйте std::vector<mxArray>

...