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