Matlab中计算两个表格列的RMSE提示无效数组索引错误怎么办
Matlab RMSE计算报错原因及修正方法
直接报错原因
你写的(y)(:)属于非法语法,Matlab不支持这种连续括号的索引写法,这是触发无效数组索引错误的直接诱因。
此外你对table类型的操作方式也存在问题:直接对table变量使用x(:)拿到的依然是table类型的子表,不是数值数组,哪怕语法修正后也无法直接做数值运算。
逻辑问题补充
你当前代码里固定除以1000的写法不符合RMSE的计算规则,RMSE需要用残差平方和除以实际样本总长度再开根号,只有你数据长度刚好为1000时该写法才成立,通用场景下会得到错误结果。
修正后代码
如果两个表格都只有一列数据,可直接提取第一列的数值做运算:
% 提取表格中第一列的数值 x_num = x{:,1}; y_num = y{:,1}; % 计算RMSE,用mean自动处理除以样本数的逻辑 rmse = sqrt(mean((x_num - y_num).^2));
如果表格的列有明确的变量名,也可以用变量名提取更稳妥,比如列名叫data的话就写x.data即可。
内容的提问来源于stack exchange,提问作者fmtcs
相关产品推荐
相关产品推荐

