MATLAB Function输入u索引越界求助:无法识别为向量
解决Simulink MATLAB Function模块索引越界问题
报错信息:
Index expression out of bounds. Attempted to access element 2. The valid range is 1-1
问题根源是MATLAB Function模块的输入u被识别为标量(仅1个元素),但代码里试图访问u(2)到u(12),导致索引越界。以下是解决步骤:
检查模块输入数据配置
双击MATLAB Function模块打开编辑器,点击顶部的「编辑数据」按钮,找到输入u:- 将「维度」从
1修改为12(如果是列向量写12,1,行向量写1,12,根据你的信号形态调整) - 确认「数据类型」设置为与输入信号匹配的数值类型(比如
double)
- 将「维度」从
验证输入信号维度
确保连接到模块输入端口的是12维向量:- 如果是多个独立标量信号,先用Mux模块把它们合并成一个12元素的向量,再接入Function模块
- 右键输入信号,选择「信号属性」查看维度,确认是12元素
可选:添加输入维度校验
在函数开头加入一行代码,提前排查输入问题:assert(length(u)==12, '输入u必须是12维向量');
你的代码本身逻辑没问题,核心是输入u的维度配置和实际输入信号不匹配,导致模块把u当成了标量处理。
内容的提问来源于stack exchange,提问作者Daniel Pérez
相关产品推荐
相关产品推荐

