exponenta event banner

Нужно ли обновлять мои MEX-файлы, чтобы использовать чередующийся комплексный API?

Для продолжения создания файлов MEX обновление исходного кода MEX не требуется. mex команда использует -R2017b API по умолчанию. Однако в будущей версии MATLAB ® mex будет использовать перемежающийся комплексный API -R2018a по умолчанию, после чего необходимо изменить команду build. Поэтому для обеспечения требуемого поведения в различных версиях MATLAB добавьте флаг совместимости. -R2017b к сценариям сборки.

Можно ли запустить существующие функции MEX?

Можно запускать существующие двоичные файлы MEX без обновления файлов для использования с перемежающимся комплексным API. Однако другие несовместимости могут препятствовать выполнению существующей функции MEX. Если функция выполняется неправильно, выполните поиск mex в соответствующих примечаниях к выпуску MATLAB и просмотрите разделы «Вопросы совместимости».

Обновить исходные файлы MEX?

Состояние исходного кодаСледующее действие
Мои функции MEX не используют комплексные числа.

Проверьте, что ваши функции правильно обрабатывают любые сложные данные ввода. Звонки в mxGetPr (C)/mxGetPr (Fortran) и mxGetData (C)/mxGetData (Fortran) не рекомендуется для сложных массивов.

MathWorks рекомендует обновить код для использования MX_HAS_INTERLEAVED_COMPLEX макрос или построение с использованием mex -R2017b для обеспечения требуемого поведения в различных версиях MATLAB.

Если вы используете mxGetData или mxSetData, попробуйте заменить их типизированными функциями доступа к данным. Дополнительные сведения см. в разделе Использование сложного API с чередованием.

Я не планирую обновлять свой код.

Если функции MEX используют комплексные числа, то вы решили отказаться. MathWorks рекомендует строить с использованием флага совместимости -R2017b.

Если код обрабатывает сложные номера, можно заметить влияние на производительность, так как MATLAB получает доступ к интерфейсу совместимости.

Я хочу обновить свой код. С чего начать?

Сведения об обновлении исходного кода см. в разделе Обновление файлов MEX для использования смешанного комплексного API.

Я использую комплексные номера в MEX-функциях, но не имею доступа к исходному коду.

Попросите владельца исходного кода выполнить действия, описанные в разделе Обновление MEX-файлов для использования Interleaved Complex API.

Я использую комплексные номера с библиотеками сторонних производителей. Мой MEX код отвечает за преобразование MATLAB представления комплексных чисел в представление библиотеки комплексных чисел.

Определение представления библиотеки комплексных чисел. Иногда представление может быть ближе к чередующемуся представлению, используемому в MATLAB.

В других случаях библиотеки имеют опции представления комплексных чисел в памяти. Если это так, обратитесь к документации поставщика и выберите представление, наиболее точно соответствующее представлению с чередованием MATLAB.

Моя функция MEX генерирует ошибки.

Необходимо перекомпилировать файл MEX из исходного кода. При использовании -R2017b флаг не решает проблему, тогда может возникнуть несовместимость в исходном коде. Сведения о несовместимости см. в разделе Можно ли запускать существующие функции MEX? MathWorks рекомендует обновить исходный код MEX для использования сложного API с чередованием.

Связанные темы