代码:
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中工作,但将我们的代码粘贴到Moodle中,Moodle使用Octave,如果这能澄清任何问题。
我还将发布我调用以供参考的函数,因为错误发生在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
发布于 2021-01-24 00:55:32
问题出在下面这行代码中:
[avg1, std_dev1] = compute_error(coeff1,y);
您正在尝试计算原始数据和拟合多项式的系数之间的误差。这说不通,对吧?
相反,您应该计算原始数据和拟合数据之间的误差,这是多项式在每个t
值时的输出。正确的代码应该是:
[avg1, std_dev1] = compute_error(pred_accum1,y);
https://stackoverflow.com/questions/65331286
复制相似问题