Когда это необходимо, код, который использует только одинарную точность, такой как тогда, когда вы предназначаетесь для процессора с одинарной точностью, можно использовать параметры конфигурации модели и параметры блоков, чтобы предотвратить введение double в модели.
Чтобы спроектировать и подтвердить модель с одинарной точностью, смотрите, Подтверждают Встроенную Модель С плавающей точкой. Если у вас есть Fixed-Point Designer™, можно использовать приложение Single Precision Converter (см. Single Precision Converter (Fixed-Point Designer)).
single Тип данных как значение по умолчанию для типов UnderspecifiedВ этом примере показано, как постараться не вводить тип данных с двойной точностью в коде, сгенерированном для аппаратной цели с одинарной точностью.
Если вы задаете наследованный тип данных для сигналов, но правила распространения типа данных не могут определить типы данных для сигналов, значения по умолчанию типов данных сигнала к 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 являются underspecified в модели.
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 как тип данных по умолчанию
Откройте диалоговое окно Configuration Parameters. На Математике и панели Типов данных, выберите single в Значении по умолчанию для underspecified типа данных выпадающий список.
В качестве альтернативы включите оптимизацию в командной строке.
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;