Когда матрица комплексных чисел представлена в памяти компьютера, существует несколько вариантов расположения и порядка хранения. Перед 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
к вашим скриптам сборки.