導航:首頁 > 源碼編譯 > matlab擬合演算法

matlab擬合演算法

發布時間:2022-09-18 16:57:14

① matlab中用遺傳演算法擬合方程

例如:
已知數據隊列 buf=【5410.】
x取值 1:n n是隊列長度
函數 f(x)=a+b*sin(c*x+d) .
avg 是隊列平均值
a b c d 為參數 a范圍 (2/3,1)*avg
b范圍 (0,1/3)*avg
c的范圍 (0,24*pi)
d (0,2*pi)
1、首先定義目標函數
function y=ga_curfit(x)
global ydata n
t=1:n;
y=0;
for i=1:n
y=y+(ydata(i)-(x(:,1)+x(:,2).*sin(x(:,3).*t(i)+x(:,4)))).^2/n;
end
y=sqrt(y);
end
2、把數據b.txt放在工作空間目錄中
然後再命令窗口中輸入
clear
global ydata n
format long g
load b.txt
ydata=b';
n=length(ydata);
avg=sum(ydata)/n;
LB=[2/3*avg 0 0 0];
UB=[1*avg 1/3*avg 24*pi 2*pi];
nvars=4;
options=gaoptimset;
options=gaoptimset(options,'PopulationSize',300);
options=gaoptimset(options,'CrossoverFraction',0.8);
options=gaoptimset(options,'MigrationFraction',0.1);
options=gaoptimset(options,'Generations',500);
options = gaoptimset(options,'TolFun',1e-50);
%options = gaoptimset(options,'InitialPopulation',final_pop);
options = gaoptimset(options,'Display','final');
options = gaoptimset(options,'PopInitRange',[LB;UB]);
options = gaoptimset(options,'PlotFcns',@gaplotbestf);
options=gaoptimset(options,'Vectorize','on');%目標函數向量化
[x,fval,exitflag,output,final_pop,scores]=ga(@ga_curfit,nvars,[],[],[],[],LB,UB,[],options);
t=1:n;
plot(t,ydata,'r*');
hold on
plot(t,x(1)+x(2)*sin(x(3)*t+x(4)))
legend('數據','擬合')

② matlab中怎麼求擬合

polyfit最小二乘法擬合,一般這個就很好用
高級一點的,start——toolboxs——curve fitting——curve fitting tool
用擬合工具箱,這里包括了常用的所有擬合函數。你也可以自己定義函數擬合求出你要的系數。一般matlab書上都會介紹工具箱的用法。
進入曲線擬合工具箱界面「Curve Fitting tool」
(1)點擊「Data」按鈕,彈出「Data」窗口;
(2)利用X data和Y data的下拉菜單讀入數據x,y,可修改數據集名「Data set name」,然後點擊「Create data set」按鈕,退出「Data」窗口,返回工具箱界面,這時會自動畫出數據集的曲線圖;
(3)點擊「Fitting」按鈕,彈出「Fitting」窗口;
(4)點擊「New fit」按鈕,可修改擬合項目名稱「Fit name」,通過「Data set」下拉菜單選擇數據集,然後通過下拉菜單「Type of fit」選擇擬合曲線的類型,工具箱提供的擬合類型有:

Custom Equations:用戶自定義的函數類型
Exponential:指數逼近,有2種類型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
Fourier:傅立葉逼近,有7種類型,基礎型是 a0 + a1*cos(x*w) + b1*sin(x*w)
Gaussian:高斯逼近,有8種類型,基礎型是 a1*exp(-((x-b1)/c1)^2)
Interpolant:插值逼近,有4種類型,linear、nearest neighbor、cubic spline、shape-preserving
Polynomial:多形式逼近,有9種類型,linear ~、quadratic ~、cubic ~、4-9th degree ~
Power:冪逼近,有2種類型,a*x^b 、a*x^b + c
Rational:有理數逼近,分子、分母共有的類型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子還包括constant型
Smoothing Spline:平滑逼近(翻譯的不大恰當,不好意思)
Sum of Sin Functions:正弦曲線逼近,有8種類型,基礎型是 a1*sin(b1*x + c1)
Weibull:只有一種,a*b*x^(b-1)*exp(-a*x^b)
選擇好所需的擬合曲線類型及其子類型,並進行相關設置:
——如果是非自定義的類型,根據實際需要點擊「Fit options」按鈕,設置擬合演算法、修改待估計參數的上下限等參數;
——如果選Custom Equations,點擊「New」按鈕,彈出自定義函數等式窗口,有「Linear Equations線性等式」和「General Equations構造等式」兩種標簽。
在本例中選Custom Equations,點擊「New」按鈕,選擇「General Equations」標簽,輸入函數類型y=a*x*x + b*x,設置參數a、b的上下限,然後點擊OK。

(5)類型設置完成後,點擊「Apply」按鈕,就可以在Results框中得到擬合結果,如下例:

general model:
f(x) = a*x*x+b*x
Coefficients (with 95% confidence bounds):
a = 0.009194 (0.009019, 0.00937)
b = 1.78e-011 (fixed at bound)
Goodness of fit:
SSE: 6.146
R-square: 0.997
Adjusted R-square: 0.997
RMSE: 0.8263

同時,也會在工具箱窗口中顯示擬合曲線。

這樣,就完成一次曲線擬合啦,十分方便快捷。當然,如果你覺得擬合效果不好,還可以在「Fitting」窗口點擊「New fit」按鈕,按照步驟(4)~(5)進行一次新的擬合。
不過,需要注意的是,cftool 工具箱只能進行單個變數的曲線擬合,即待擬合的公式中,變數只能有一個。對於混合型的曲線,例如 y = a*x + b/x ,工具箱的擬合效果並不好。
這是一點介紹,具體還得自己摸索啊,少年

③ Matlab正弦曲線擬合

方法/步驟

④ 怎麼用matlab進行非線性的多元函數擬合

方法一:

1、最常用的是多項式擬合,採用polyfit函數,在命令窗口輸入自變數x和因變數y。

⑤ Matlab曲線擬合

>>x=[0.25,.5.75,1,1.5,2,2.5,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16];

>>y=...

[30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10,7,7,4];

>>plot(x,y,'-')

得到一個圖像

可以看出他大概類似於一條拋物線

可以用二次擬合

輸入:

>>a=polyfit(x,y,2)

>>a=

0.0904-6.138775.1158

所以擬合後的曲線為:

y=0.0904t^2-6.1387t+75.1158

(y是酒精含量,t是時間)

檢驗後符合條件

⑥ matlab數據太多怎麼擬合曲線

一、 單一變數的曲線逼近
Matlab有一個功能強大的曲線擬合工具箱
cftool ,使用方便,能實現多種類型的線性、非線
性曲線擬合。下面結合我使用的 Matlab R2007b 來簡單介紹如何使用這個工具箱。
假設我們要擬合的函數形式是 y=A*x*x + B*x, 且A>0,B>0 。
1、在命令行輸入數據:

》x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908
280.0447
296.204 311.5475]

》y=[5 10 15 20 25 30 35 40 45 50]

2、啟動曲線擬合工具箱
》cftool

3、進入曲線擬合工具箱界面逗Curve Fitting
tool地
(1)點擊逗Data地按鈕,彈出逗Data地窗口;
(2)利用X data和Y data的下拉菜單讀入數據x,y,可修改數據集名逗Data set
name地,然
後點擊逗Create data set地按鈕,退出逗Data地窗口,返回工具箱界面,這時會自動畫出數
據集的曲線圖;
(3)點擊逗Fitting地按鈕,彈出逗Fitting地窗口;
(4)點擊逗New fit地按鈕,可修改擬合項目名稱逗Fit name地,通過逗Data
set地下拉菜單
選擇數據集,然後通過下拉菜單逗Type of fit地選擇擬合曲線的類型,工具箱提供的擬合類
型有:
Custom
Equations:用戶自定義的函數類型
Exponential:指數逼近,有2種類型, a*exp(b*x) 、 a*exp(b*x) +
c*exp(d*x)
Fourier:傅立葉逼近,有7種類型,基礎型是 a0 + a1*cos(x*w) +
b1*sin(x*w)
Gaussian:高斯逼近,有8種類型,基礎型是 a1*exp(-((x-b1)/c1)^2)
Interpolant:插值逼近,有4種類型,linear、nearest neighbor、cubic
spline、shape-
preserving
Polynomial:多形式逼近,有9種類型,linear ~、quadratic ~、cubic ~、4-9th degree
~
Power:冪逼近,有2種類型,a*x^b 、a*x^b + c
Rational:有理數逼近,分子、分母共有的類型是linear ~、quadratic ~、cubic
~、4-5th
degree ~;此外,分子還包括constant型
Smoothing Spline:平滑逼近(翻譯的不大恰當,不好意思)
Sum of Sin Functions:正弦曲線逼近,有8種類型,基礎型是 a1*sin(b1*x +
c1)
Weibull:只有一種,a*b*x^(b-1)*exp(-a*x^b)
選擇好所需的擬合曲線類型及其子類型,並進行相關設置:
——如果是非自定義的類型,根據實際需要點擊逗Fit options地按鈕,設置擬合演算法、修改
待估計參數的上下限等參數;
——如果選Custom
Equations,點擊逗New地按鈕,彈出自定義函數等式窗口,有逗Linear
Equations線性等式地和逗General Equations構造等式地兩種標簽。
在本例中選Custom Equations,點擊逗New地按鈕,選擇逗General
Equations地標簽,輸入函
數類型y=a*x*x + b*x,設置參數a、b的上下限,然後點擊OK。
(5)類型設置完成後,點擊逗Apply地按鈕,就可以在Results框中得到擬合結果,如下例:
general model:
f(x) = a*x*x+b*x
Coefficients (with 95% confidence bounds):
a = 0.009194 (0.009019, 0.00937)
b = 1.78e-011 (fixed at bound)
Goodness of fit:
SSE: 6.146
R-square: 0.997
Adjusted R-square: 0.997
RMSE: 0.8263
同時,也會在工具箱窗口中顯示擬合曲線。
這樣,就完成一次曲線擬合啦,十分方便快捷。當然,如果你覺得擬合效果不好,還可以在逗
Fitting地窗口點擊逗New fit地按鈕,按照步驟(4)~(5)進行一次新的擬合。
不過,需要注意的是,cftool 工具箱只能進行單個變數的曲線擬合,即待擬合的公式中,變
量只能有一個。對於混合型的曲線,例如 y = a*x + b/x ,工具箱的擬合效果並不好。

⑦ matlab如何進行曲線擬合

您好,這樣的:一、 單一變數的曲線逼近
Matlab有一個功能強大的曲線擬合工具箱 cftool ,使用方便,能實現多種類型的線性、非線
性曲線擬合。下面結合我使用的 Matlab R2007b 來簡單介紹如何使用這個工具箱。
假設我們要擬合的函數形式是 y=A*x*x + B*x, 且A>0,B>0 。
1、在命令行輸入數據:

》x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447
296.204 311.5475]

》y=[5 10 15 20 25 30 35 40 45 50]

2、啟動曲線擬合工具箱
》cftool

3、進入曲線擬合工具箱界面「Curve Fitting tool」
(1)點擊「Data」按鈕,彈出「Data」窗口;
(2)利用X data和Y data的下拉菜單讀入數據x,y,可修改數據集名「Data set name」,然
後點擊「Create data set」按鈕,退出「Data」窗口,返回工具箱界面,這時會自動畫出數
據集的曲線圖;
(3)點擊「Fitting」按鈕,彈出「Fitting」窗口;
(4)點擊「New fit」按鈕,可修改擬合項目名稱「Fit name」,通過「Data set」下拉菜單
選擇數據集,然後通過下拉菜單「Type of fit」選擇擬合曲線的類型,工具箱提供的擬合類
型有:
Custom Equations:用戶自定義的函數類型
Exponential:指數逼近,有2種類型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
Fourier:傅立葉逼近,有7種類型,基礎型是 a0 + a1*cos(x*w) + b1*sin(x*w)
Gaussian:高斯逼近,有8種類型,基礎型是 a1*exp(-((x-b1)/c1)^2)
Interpolant:插值逼近,有4種類型,linear、nearest neighbor、cubic spline、shape-
preserving
Polynomial:多形式逼近,有9種類型,linear ~、quadratic ~、cubic ~、4-9th degree ~
Power:冪逼近,有2種類型,a*x^b 、a*x^b + c
Rational:有理數逼近,分子、分母共有的類型是linear ~、quadratic ~、cubic ~、4-5th
degree ~;此外,分子還包括constant型
Smoothing Spline:平滑逼近(翻譯的不大恰當,不好意思)
Sum of Sin Functions:正弦曲線逼近,有8種類型,基礎型是 a1*sin(b1*x + c1)
Weibull:只有一種,a*b*x^(b-1)*exp(-a*x^b)
選擇好所需的擬合曲線類型及其子類型,並進行相關設置:
——如果是非自定義的類型,根據實際需要點擊「Fit options」按鈕,設置擬合演算法、修改
待估計參數的上下限等參數;
——如果選Custom Equations,點擊「New」按鈕,彈出自定義函數等式窗口,有「Linear
Equations線性等式」和「General Equations構造等式」兩種標簽。
在本例中選Custom Equations,點擊「New」按鈕,選擇「General Equations」標簽,輸入函
數類型y=a*x*x + b*x,設置參數a、b的上下限,然後點擊OK。

⑧ MATLAB遺傳演算法擬合

代碼:

function y=myfung(x)

% TOT =[2.057 3.6094 4.9881 6.0189 6.8371 7.4881 8.0047 8.4151 8.7411 9.0000];

% t=[1:10];

% [r,s]=size(TOT);

% y=0;

% for i=1:s

% y=y+(TOT(i)-x(:,1)*(1 -exp(-x(:,2)*t(i))))^2 %最小估計原則

% end

%

x1=[-0.05 0.25 0.60 0 0.25 0.20 0.15 0.05 -0.15 0.15 0.20 0.10 0.40 0.45 0.35 0.30 0.50 0.50 0.40 -0.05 -0.05 -0.10 0.20 0.10 0.50 0.60 -0.05 0 0.05 0.55];

x2=[5.50 6.75 7.25 5.50 7.00 6.50 6.75 5.25 5.25 6.00 6.50 6.25 7.00 6.90 6.80 6.80 7.10 7.00 6.80 6.50 6.25 6.00 6.50 7.00 6.80 6.80 6.50 5.75 5.80 6.80];

y0=[7.38 8.51 9.52 7.50 9.33 8.28 8.75 7.87 7.10 8.00 7.89 8.15 9.10 8.86 8.90 8.87 9.26 9.00 8.75 7.95 7.65 7.27 8.00 8.50 8.75 9.21 8.27 7.67 7.93 9.26];

x3=x1.*x2;

TOT=y0;

[r,s]=size(TOT);

y=0;

for i=1:s

y2=x(:,1)+x(:,2).*x1(i)+x(:,3).*x2(i)+x(:,4).*x2(i)^2+x(:,5).*x3(i);

y=y+(TOT(i)-y2)^2 %最小估計原則

end

end

參數依次為

-1.151 5.652 -0.212 0.267 -1.165

每一次運算結果會有差異,因此起始值是隨機的,所以優化過程也是不同的。

⑨ matlab如何做線性擬合

方法一

1、最常用的是多項式擬合,採用polyfit函數,在命令窗口輸入自變數x和因變數y。

⑩ matlab畫出的曲線怎麼擬合函數

擬合步驟:
1、求(獲)得一系列x,y對應值
x=[...]
y=[...]
2、根據畫出的曲線,,設定擬合函數
fun=inline('a(1)+a(2)*exp(a(3)*x','a','x')
3、初定x0的初值
x0=[0 0 0]
4、用擬合函數求出擬合系數
a=lsqcurvefit(fun,x0,x,y) 或 a= nlinfit(x,y,fun,x0)
用cftool的結果與實際是有較大的誤差。你不仿用二種獲得的擬合函數,將已知值x代人,得到的yi,那個更接近已知值y。
一般用cftool工具箱,來判斷擬合函數可能的形式。

閱讀全文

與matlab擬合演算法相關的資料

熱點內容
linux系統記錄 瀏覽:127
linuxusb驅動下載 瀏覽:34
梁特殊箍筋加密區公式 瀏覽:141
web應用安全pdf 瀏覽:47
linuxintel網卡驅動下載 瀏覽:217
資源解壓後怎麼刪除 瀏覽:868
編程之美15種演算法 瀏覽:147
java的圖形用戶界面設計 瀏覽:769
算數游戲源碼 瀏覽:999
壓縮機工作聲音判斷 瀏覽:985
事業單位程序員 瀏覽:506
易語言取相似顏色源碼 瀏覽:773
pyodbclinux 瀏覽:585
vivo為什麼把伺服器沉到深海 瀏覽:460
程序員能為電商做什麼 瀏覽:401
騰訊直充qq號加密碼 瀏覽:140
qt搭建msvc編譯器環境 瀏覽:338
單片機晶振壞了會不會工作不穩定 瀏覽:770
天天影迷APP顯示連接伺服器失敗怎麼回事 瀏覽:961
鋼鐵命令同盟第七關怎麼過 瀏覽:7