Когда матрица комплексных чисел представлена в компьютерной памяти, существует несколько вариантов расположения и порядка хранения. До MATLAB ® версии 9.4 (R2018a) MATLAB использовал отдельное представление памяти. Реальная и мнимая части чисел хранились отдельно. MATLAB использует чередующееся представление памяти для MEX-файлов на языках C и Fortran, где действительная и мнимая части хранятся вместе. К этому представлению относится перемежающийся комплекс.
Поскольку многие математические библиотеки используют перемежающееся комплексное представление, использование того же представления в функциях MEX устраняет необходимость в преобразовании данных. Это упрощает код и потенциально ускоряет обработку при использовании больших наборов данных.
Это изменение не влияет на язык MATLAB. Можно продолжать использовать функциональные возможности, описанные в разделе Комплексные номера, без каких-либо изменений функций и сценариев.
Существуют две версии 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 C и Fortran Matrix поддерживают комплекс с чередованием.
Новые типизированные функции доступа к данным. Дополнительные сведения см. в разделе Типизированный доступ к данным в файлах C MEX.
Функции матричного API, добавленные в -R2018a API:
Функции API матрицы не поддерживаются в -R2018a API:
Поведение этих функций Matrix API изменяется в -R2018a API. Кроме того, эти функции должны быть свернуты.
Поведение этих функций Matrix API изменяется в -R2018a API:
Поведение этих функций API Fortran Matrix изменяется в -R2018a API:
Сведения о том, как писать функции MEX с помощью перемежающегося комплексного API, см. в разделе Обработка сложных данных в файле C MEX в приложениях C или Обработка сложных данных Fortran.
Если вы уже построили 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 к сценариям сборки.