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

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

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

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

Отдельный комплексный API и чередованный комплексный API

Существует две версии Матричного API C и Матричного API Фортрана.

  • separate complex API содержит Матричную функциональность API C и Фортрана в MATLAB R2017b и ранее.

  • interleaved complex API содержит Матричную функциональность API C с MATLAB R2018a и Матричную функциональность API Фортрана с Обновления MATLAB R2018a 3.

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

Примечание

Запускать файл MEX Фортрана создало с чередованным комплексным API в MATLAB R2018a, необходимо использовать Обновление MATLAB R2018a 3.

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

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

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

Чтобы изучить, как записать MEX-функции с помощью чередованного комплексного API, смотрите, Обрабатывают Комплексные данные в Файле MEX на C в приложениях C или Обрабатывают Комплекс Данные Фортрана.

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

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

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

Похожие темы