Поддержка MATLAB для чередующегося комплексного API в MEX-функциях

Когда матрица комплексных чисел представлена в памяти компьютера, существует несколько вариантов расположения и порядка хранения. Перед MATLAB® Версия 9.4 (R2018a), MATLAB использовал separate представление хранилища. Настоящая и мнимая части чисел хранились отдельно. MATLAB использует представление interleaved хранилища для языковых Файлов MEX на C и Фортран, где действительная и мнимая части хранятся вместе. Interleaved complex ссылается на это представление.

Поскольку многие математические библиотеки используют перемеженное комплексное представление, использование того же представления в ваших MEX-функциях устраняет необходимость преобразования данных. Это упрощает ваш код и потенциально ускоряет обработку при участии больших наборов данных.

Это изменение не влияет на язык MATLAB. Вы можете продолжать использовать функциональность, описанную в Complex Numbers, без какого-либо изменения ваших функций и скриптов.

Отдельный комплексный API и перемежающийся комплексный API

Существует две версии API на C Matrix и API на Фортран матрица.

  • Этот separate complex API содержит функциональность API на C и Фортран Matrix в MATLAB R2017b и более ранних версиях.

  • Этот interleaved complex API содержит функциональность API на C MATLAB R2018a и функциональность API на Fortran Matrix на MATLAB R2018a Update 3.

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

Примечание

Чтобы запустить файл MEX на языке Фортран, созданный с помощью чередующегося комплексного API в MATLAB R2018a, необходимо использовать MATLAB R2018a Update 3.

Матричные изменения API, поддерживающие перемежающийся комплекс

Следующие изменения API C и Fortran Matrix поддерживают перемежающийся комплекс.

Запись MEX-функций с перемеженным комплексным API

Чтобы узнать, как записать MEX-функции с помощью чередующегося комплексного API, смотрите Handle Complex Data in Файл MEX на C in C applications или Handle Complex Fortran Data.

MEX-функции, созданные в MATLAB R2017b и более ранних версиях

Если вы уже строите MEX-функции, MEX S-функции или автономный движок MATLAB и приложения MAT-файлов, то вам следует просмотреть, нужно ли мне обновлять мои файлы MEX, чтобы использовать Interleaved Complex API? тема. Чтобы помочь в переходе ваших файлов MEX и S-функций к чередующемуся комплексному API, MATLAB поддерживает интерфейс совместимости. Чтобы создать файлы MEX с интерфейсом совместимости, используйте mex -R2017b флаг. Если ваш код обрабатывает комплексные числа, вы можете заметить влияние эффективности, когда MATLAB адаптирует ваши данные к чередующемуся сложному формату.

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

Похожие темы