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

如何从Excel或结构体的信号名列表创建Simulink.Parameter

解决方法

你的代码存在两个核心问题:

  1. 循环范围错误:for i = numel(Calibration) 只会让i取到元胞数组的长度值,无法遍历所有元素
  2. 元胞数组赋值方式错误:直接用Calibration(1,i) = Simulink.Parameter不符合MATLAB元胞数组的赋值规则

下面分几种常见场景给出正确实现:

如果想让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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:33:13