首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >请解释此倍频程错误代码: op1为1x12,op2为1x3

请解释此倍频程错误代码: op1为1x12,op2为1x3
EN

Stack Overflow用户
提问于 2020-12-17 05:21:43
回答 1查看 79关注 0票数 0

代码:

代码语言:javascript
运行
复制
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
代码语言:javascript
运行
复制
***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之前,我将在其中定义我要调用的函数。

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2021-01-24 00:55:32

问题出在下面这行代码中:

[avg1, std_dev1] = compute_error(coeff1,y);

您正在尝试计算原始数据和拟合多项式的系数之间的误差。这说不通,对吧?

相反,您应该计算原始数据和拟合数据之间的误差,这是多项式在每个t值时的输出。正确的代码应该是:

[avg1, std_dev1] = compute_error(pred_accum1,y);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65331286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档