You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Simulink中设置1x3通用输入输出用于卡尔曼滤波C代码生成?

解决Simulink卡尔曼滤波模型的数组IO配置与代码可读性问题

一、设置1x3数组的Inport/Outport模块

  • 双击Inport或Outport模块打开参数面板,在信号属性的维度栏输入[1 3],直接输入3也会自动识别为1x3行向量,确认后模块即可处理1x3数组信号
  • 若需复用维度配置,可在MATLAB命令行创建信号对象:
    % 定义输入信号对象
    inputSignal = Simulink.Signal;
    inputSignal.Dimensions = [1 3];
    % 定义输出信号对象
    outputSignal = Simulink.Signal;
    outputSignal.Dimensions = [1 3];
    
    然后在Inport/Outport模块的信号名称下拉框选择对应的信号对象,维度会自动同步

二、让生成的C代码更易读、便于修改IO

  • 给Inport/Outport模块设置明确名称,比如SensorDataIn、FilteredStateOut,生成的代码会直接用该名称作为接口变量名,替代默认的In1、Out1
  • 配置代码生成规则:
    1. 按Ctrl+E打开配置参数窗口
    2. 进入代码生成 > 命名选项卡,勾选「使用模块名称作为信号名称」,并设置全局变量命名规则为保留模块名的格式
    3. 进入代码生成 > 代码样式选项卡,勾选「生成模块注释」和「生成信号注释」,代码中会标注对应Simulink模块的信息
  • 优先用Inport/Outport做IO接口:这类模块生成的是可外部访问的全局变量,在头文件中会以extern real_T SensorDataIn[3];形式声明,直接修改数组元素即可;而Constant模块会生成硬编码常量,无法在外部修改
  • 利用代码生成报告:在配置参数的代码生成 > 报告中勾选「生成代码生成报告」,报告里会关联Simulink模块和对应的代码位置,快速定位IO变量的定义与使用

内容的提问来源于stack exchange,提问作者Marius Dumitru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:30:01