【问题标题】:How to obtain elements of an array close to another array in MATLAB?如何在MATLAB中获取靠近另一个数组的数组元素?
【发布时间】:2017-02-10 23:51:49
【问题描述】:

必须有更简单的方法来做到这一点,也欢迎优化方法。我有一个数组'Y'和许多必须调整的参数,以使 Y 接近零(='X'),如 MWE 中给出的。有没有更好的程序来最小化这种差异?这只是一个示例方程,可以优化 6 个系数。

x = zeros(10,1)
y = rand(10,1)
for a=1:0.1:4
    for b=2:0.1:5
        for c = 3:0.1:6
            z = (a * y .^ 3 + b * y + c) - x
            if -1<= range(z) <= 1
                a, b, c
                break
            end
        end

    end
end

【问题讨论】:

    标签: arrays matlab optimization least-squares


    【解决方案1】:

    我相信

     p = polyfit(y,x,2);
    

    是您正在寻找的。 其中 p 将是您的 [a, b, c] 系数的数组。

    【讨论】:

    • 没有。 a,b,c 应该在一个范围内取值。
    • polyfit 求解一个最小化程序——模型是y 的多项式函数,你有一些测试数据{y_i}_{i=1}^Npolyfit 不限制a,b,c 的范围。相反,您可以写出带有a,b,c 约束的最小化程序,并使用fmincon 或其他一些求解器来找到a,b,c,以最小化数据和模型(L2 norm)之间的距离,并受@ 987654332@ 在特定范围内。请参阅 Boyd 关于约束最小二乘的注释:stanford.edu/class/ee103/lectures/constrained-least-squares/…
    猜你喜欢
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多