octave - 请解释这个 Octave 错误代码:op1 是 1x12,op2 是 1x3
问题描述
代码:
function result = assess_polynomial_n(y,n)
[coeff, t, pred_accum] = fit_data(y, n);
[avg, std_dev] = compute_error(coeff,y);
[coeff1, t, pred_accum1] = fit_data(y, n+1);
[avg1, std_dev1] = compute_error(coeff1,y);
if avg1>avg
result = n;
elseif avg<0.1 && std_dev<0.1
result = n;
elseif pred_accum1.*(1)<0.0001
result = n;
else
result = 0;
end
end
***Error***
error: compute_error: operator -: nonconformant arguments (op1 is 1x12, op2 is 1x3)
error: called from
compute_error at line 11 column 17
assess_polynomial_n at line 19 column 18
__tester__.octave at line 38 column 1
有谁知道为什么我会收到这个错误?我们应该在 MATLAB 中工作,但将我们的代码粘贴到使用 Octave 的 Moodle 中,如果这样可以清除任何内容。
由于错误发生在 Compute_Error 中,我还将发布我要求参考的函数。这是整个项目的一部分,我将在其中定义我在创建assess_polynomial_n 之前调用的函数。
function [coeff, t, pred_accum] = fit_data(y, n)
len = length(y);
t = 10*[0:len-1];
coeff = polyfit(t, y, n);
pred_accum = polyval(coeff, t);
end
function [avg std_dev] = compute_error(x,y)
s=[];
for i=1:length(x)
error=abs(x(i)-y(i));
s=[s,error];
end
avg = mean(s);
std_dev = std(s);
end
解决方案
问题在于这行代码:
[avg1, std_dev1] = compute_error(coeff1,y);
您正在尝试计算原始数据与拟合多项式系数之间的误差。这没有意义,对吧?
相反,您应该计算原始数据和拟合数据之间的误差,这是多项式在每个t
值处的输出。正确的代码是:
[avg1, std_dev1] = compute_error(pred_accum1,y);
推荐阅读
- bash - 使用 dd 写入图像后,如何挂载它以写入另一个文件?
- mysql - 查找重复值
- javascript - 如何修复错误“错误“npm WARN 已过期 json3@3.3.2:请使用您自己的 JSON 对象而不是 JSON 3”
- django - 如何使用自定义 __init__ 查询类
- python - 如何在同一地理数据框中获取多边形与其他多边形的交集?
- node.js - 在 Node.js 中使用 ElasticSearch 管理电子邮件
- windows - Docker:MariaDB 随着时间的推移变得不可用
- javascript - 如何将 html 表单中的值读取到 javascript 的变量中
- node.js - 提高nosql数据库的写入性能
- actions-on-google - 谷歌助手应用不存储用户信息