Когда вы хотите код, который использует только одну точность, например, когда вы нацелены на процессор с одной точностью, можно использовать параметры конфигурации модели и параметры блоков, чтобы предотвратить введение double в модели.
Для разработки и проверки модели с одной точностью смотрите Валидация встраиваемой модели с плавающей точкой. Если у вас есть Fixed-Point Designer™, можно использовать приложение Single Precision Converter (см. Single Precision Converter (Fixed-Point Designer)).
single Тип данных по умолчанию для недоопределенных типовВ этом примере показано, как избежать введения типа данных с двойной точностью в код, сгенерированный для аппаратной цели с одной точностью.
Если вы задаете унаследованный тип данных для сигналов, но правила распространения типа данных не могут определить типы данных для сигналов, типы данных сигнала по умолчанию double. Можно использовать параметр конфигурации модели, чтобы задать тип данных по умолчанию как single.
Исследуйте модель примера
Откройте пример модели rtwdemo_underspecified_datatype и сконфигурируйте его, чтобы показать сгенерированные имена блоков.
model = 'rtwdemo_underspecified_datatype'; load_system(model) set_param(model,'HideAutomaticNames','off') open_system(model);

Корневые входные порты In2, In3, и In4 задайте Inherit: Auto для типа Данных параметров блоков. Нисходящие блоки также используют унаследованные типы данных.
Сгенерируйте код с double как тип данных по умолчанию
Модель начинается с параметра конфигурации Системный целевой файл, установленный на ert.tlc, для чего требуется Embedded Coder. Установите Системный целевой файл в grt.tlc вместо этого.
set_param(model,'SystemTargetFile','grt.tlc')
Сгенерируйте код из модели.
slbuild(model)
### Starting build procedure for: rtwdemo_underspecified_datatype ### Successful completion of build procedure for: rtwdemo_underspecified_datatype Build Summary Top model targets built: Model Action Rebuild Reason ================================================================================================================ rtwdemo_underspecified_datatype Code generated and compiled Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 6.9724s
В отчете о генерации кода просмотрите файл rtwdemo_underspecified_datatype.h. Код использует double тип данных для определения переменных In2, In3, и In4 поскольку типы данных Inport недоопределены в модели.
cfile = fullfile('rtwdemo_underspecified_datatype_grt_rtw',... 'rtwdemo_underspecified_datatype.h'); rtwdemodbtype(cfile,... '/* External inputs (root inport signals with default storage) */',... '/* External outputs (root outports fed by signals with default storage) */',... 1, 0);
/* External inputs (root inport signals with default storage) */
typedef struct {
int8_T In1; /* '<Root>/In1' */
real_T In2; /* '<Root>/In2' */
real_T In3; /* '<Root>/In3' */
real_T In4; /* '<Root>/In4' */
} ExtU_rtwdemo_underspecified_d_T;
Сгенерируйте код с single как тип данных по умолчанию
Откройте диалоговое окно Параметры конфигурации. На панели «Математика и типы данных» выберите single в раскрывающемся списке По умолчанию для недоопределенного типа данных.
Также включите оптимизацию в командной строке.
set_param(model, 'DefaultUnderspecifiedDataType', 'single');
Сгенерируйте код из модели.
slbuild(model)
### Starting build procedure for: rtwdemo_underspecified_datatype ### Successful completion of build procedure for: rtwdemo_underspecified_datatype Build Summary Top model targets built: Model Action Rebuild Reason =============================================================================================== rtwdemo_underspecified_datatype Code generated and compiled Generated code was out of date. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 5.7877s
В отчете о генерации кода просмотрите файл rtwdemo_underspecified_datatype.h. Код использует single тип данных для определения переменных In2, In3, и In4.
rtwdemodbtype(cfile,... '/* External inputs (root inport signals with default storage) */',... '/* External outputs (root outports fed by signals with default storage) */',... 1, 0);
/* External inputs (root inport signals with default storage) */
typedef struct {
int8_T In1; /* '<Root>/In1' */
real32_T In2; /* '<Root>/In2' */
real32_T In3; /* '<Root>/In3' */
real32_T In4; /* '<Root>/In4' */
} ExtU_rtwdemo_underspecified_d_T;