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

Вам не нужно обновлять исходный код MEX, чтобы продолжить создание файлов MEX. mex команда использует -R2017b API по умолчанию. Однако в будущей версии MATLAB®, mex использует перемежающийся комплексный API -R2018a по умолчанию, а затем необходимо изменить команду сборки. Поэтому, чтобы гарантировать желаемое поведение между версиями 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 обращается к интерфейсу совместимости.

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

Для обновления исходного кода смотрите Upgrade MEX Files to Use Interleaved Complex API.

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

Попросите владельца исходного кода следовать шагам в Upgrade MEX Files to Use Interleaved Complex API.

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

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

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

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

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

Похожие темы