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

如何解决Scilab参数拟合时的‘submatrix incorrectly defined’错误?

解决Scilab中"submatrix incorrectly defined"错误(ODE参数拟合场景)

你碰到的这个错误,核心原因很明确:Scilab不允许直接给一个还未初始化的矩阵的列赋值。你现在的代码里先写了y_exp(:,1),但此时y_exp还不存在,Scilab不知道它的维度(行数、列数),所以会抛出"submatrix incorrectly defined"的报错。而模板里的原数据应该是用了直接创建完整矩阵的方式,所以没这个问题。

下面给你两种简单的解决方法:

方法一:先初始化矩阵,再赋值列

先创建一个和你的实验数据维度匹配的空矩阵(这里是9行2列,因为t有9个时间点,每个点对应2个实验值),再给每一列赋值:

// 先创建9行2列的空矩阵
y_exp = zeros(9, 2);
// 给第一列赋值
y_exp(:,1) = [0.135,0.0924,0.067,0.0527,0.0363,0.02445,0.01668,0.012,0.009]';
// 给第二列赋值
y_exp(:,2) = [0,0.00918,0.0132,0.01835,0.0261,0.03215,0.0366,0.0393,0.0401]';

方法二:直接一次性创建完整矩阵(更简洁)

把两列实验数据直接组合成矩阵,一步到位,省去初始化步骤:

y_exp = [0.135, 0;
         0.0924, 0.00918;
         0.067, 0.0132;
         0.0527, 0.01835;
         0.0363, 0.0261;
         0.02445, 0.03215;
         0.01668, 0.0366;
         0.012, 0.0393;
         0.009, 0.0401];

或者用行向量转置的方式组合:

col1 = [0.135,0.0924,0.067,0.0527,0.0363,0.02445,0.01668,0.012,0.009]';
col2 = [0,0.00918,0.0132,0.01835,0.0261,0.03215,0.0366,0.0393,0.0401]';
y_exp = [col1, col2];

另外再提醒你一句:确保t的长度和y_exp的行数完全一致(你现在的t有9个元素,实验数据也是9组,这部分是对的),不然后续ODE求解和最小二乘拟合也会出现维度不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:14:48