如何从Excel或结构体的信号名列表创建Simulink.Parameter
解决方法
你的代码存在两个核心问题:
- 循环范围错误:
for i = numel(Calibration)只会让i取到元胞数组的长度值,无法遍历所有元素 - 元胞数组赋值方式错误:直接用
Calibration(1,i) = Simulink.Parameter不符合MATLAB元胞数组的赋值规则
下面分几种常见场景给出正确实现:
场景1:创建独立的Simulink.Parameter变量到工作区
如果想让Var1、Var2这些名称直接成为工作区中的Simulink.Parameter对象,可使用assignin函数:
Calibration = {'Var1';'Var2';'Var3';'Var4'}; for i = 1:numel(Calibration) param = Simulink.Parameter; % 可按需设置参数属性(示例) param.Value = 0; param.DataType = 'single'; assignin('base', Calibration{i}, param); end
运行后,工作区会生成Var1至Var4对应的Simulink.Parameter对象。
场景2:将对象存入结构体(推荐,便于统一管理)
若想把所有Simulink.Parameter对象统一管理在一个结构体中,代码如下:
Calibration = {'Var1';'Var2';'Var3';'Var4'}; paramStruct = struct(); for i = 1:numel(Calibration) paramStruct.(Calibration{i}) = Simulink.Parameter; % 示例属性设置 paramStruct.(Calibration{i}).Value = 1; paramStruct.(Calibration{i}).DataType = 'double'; end
后续可通过paramStruct.Var1这类方式直接访问对应对象。
场景3:存入元胞数组
如果一定要用元胞数组存储,修正赋值方式即可:
Calibration = {'Var1';'Var2';'Var3';'Var4'}; paramCell = cell(size(Calibration)); for i = 1:numel(Calibration) paramCell{i} = Simulink.Parameter; % 示例属性设置 paramCell{i}.Value = 2; end
注意这里使用大括号{}为元胞数组元素赋值,而非小括号()。
内容的提问来源于stack exchange,提问作者Siddharth S
相关产品推荐
相关产品推荐

