2016-10-03 93 views
0

必須有一個更簡單的方法來做到這一點,也歡迎優化方法。我有一個數組'Y'和許多參數必須調整,使得Y接近零(='X'),如MWE中給出的。是否有更好的程序來減少這種差異?這只是一個示例方程,可以有6個係數進行優化。如何在MATLAB中獲得接近另一個數組的數組元素?

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 

回答

1

我相信

p = polyfit(y,x,2); 

是你在找什麼。 其中p將是你的[a,b,c]係數的數組。

+0

編號a,b,c應取一定範圍內的值。 –

+0

'polyfit'解決最小化程序 - 模型是'y'的多項式函數,並且您有一些測試數據{{y_i} _ {i = 1}^N'。 'polyfit'不限制'a,b,c'的範圍。你可以用'a,b,c'約束寫出最小化程序,並使用'fmincon'或其他求解器來找到'a,b,c',以最小化數據和模型之間的距離('L2'規範)受制於'a,b,c'在特定範圍內的限制。請參閱博伊德關於約束最小二乘的筆記:http://stanford.edu/class/ee103/lectures/constrained-least-squares/constrained-least-squares_slides.pdf –

相關問題