exponenta event banner

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

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

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

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

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

Существуют две версии C Matrix API и Fortran Matrix API.

  • Отдельный комплексный API содержит функции C и Fortran Matrix API в MATLAB R2017b и более ранних версиях.

  • Перемежающийся комплексный API содержит функциональные возможности C Matrix API, как в MATLAB R2018a, и функции Fortran Matrix API, как в MATLAB R2018a Update 3.

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

Примечание

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

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

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

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

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

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

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

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

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