Ⅰ matlab最小二乘法工具箱在哪找不到
這些在matlab的幫助文件里都有說明的,直接在help菜單里搜RMSE就找到了,而且那幾個統計量都在
Ⅱ matlab三維曲面進行平面擬合,利用最小二乘法
可以直接使用matlab的曲面擬合工具箱,但是平面擬合的效果一般
1、在命令內窗口輸入待擬合容的數據
>>x=[11.4,11.4,11.4,11.4;13.1,13.1,13.1,13.1;14.8,14.8,14.8,14.8;16.5,16.5,16.5,16.5;18.2,18.2,18.2,18.2];
y=[0.84,0.72,0.61,0.45;0.68,0.49,0.44,0.41;0.57,0.43,0.40,0.38;0.42,0.37,0.33,0.17;0.39,0.30,0.24,0.16];
z=[1.62,2.51,2.63,2.64;1.93,2.58,3.01,3.23;2.45,2.83,3.27,3.31;2.60,3.27,3.33,3.45;2.93,3.74,4.09,4.35];
2、輸入sftool命令打開曲面擬合工具箱,然後依次選擇x,y,z數據
>>sftool
其中,R-square表示擬合度,越接近於1表示擬合效果越好,此時僅為0.8241,所以效果並不好。
Ⅲ matlab 最小二乘法擬合
主要的問題是inline函數寫法不對,matlab不能識別下面的寫法:
f=inline('R*exp(-a*x)','[Ra]','x');
像這種有多個待辨識參數的情況,應該寫成一個向量,如
f=inline('c(1)*exp(-c(2)*x)','c','x');
參考代碼:
%生成測試數據
t=linspace(0,2*pi,50);
x=1.5*cos(t);
y=1.5*sin(t);
plot(x,y)
holdon
t=linspace(0,pi,30);
r=1.5*exp(-1*t)+0.02*randn(size(t));%數據中加入雜訊
x=r.*cos(t);
y=r.*sin(t);
plot(x,y,'r')
axisequal
%curvefit
[theta,rho]=cart2pol(x,y);%transformintopolarcoord
idx=(x<=eps)&(y<=eps);
theta(idx)=[];
rho(idx)=[];
f=inline('c(1)*exp(-c(2)*x)','c','x');
[BestPara,resnorm,resil]=lsqcurvefit(f,[1.51],theta,rho);
R=f(BestPara,theta);
X=R.*cos(theta);
Y=R.*sin(theta);
plot(X,Y,':g')
legend('圓','原始數據','擬合數據');
結果如圖:
Ⅳ matlab中的cftool擬合工具箱中的擬合函數是用什麼方法擬合的最小二乘法還是別的謝謝
如果想使用擬合後的函數,則可以做到。以下面的數據為例:
y=[5 10 15 20 25 30 35 40 45 50];
x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447 296.204 311.5475];
用cftool擬合後,點擊Fitting窗口下邊的save to workspace按鈕,即可,如下圖:
(假設保存時命名為model1)然後如果想計算當x=250.000時的y值,只需在命令窗口輸入語句:model1(250.000),則可得到:
model1(250)
ans =
31.4422
Ⅳ 用Matlab做曲線擬合的最小二乘法,謝謝
命令窗口輸入x=[0,0.5,1,1.5,2,2.5,3,3.5];y=[1,2.4,3.1,5.0,7,11,17,24];cftool
在新抄的圖襲形界面中,點data,creat data,x與y選擇相應的創造data後,在fit里選擇new fit,在選擇自己想要的函數(有很多函數選擇,還可以自定義,不過我沒自定義過),得到結果,
如果要看圖形,那裡有figure,畫圖即可
cftool是很強大的曲線擬合工具箱,也很容易操作,試試吧
Ⅵ MATLAB怎麼用最小二乘法擬合數據曲線
用polyfit函數擬合就行了,這個函數就是利用最小二乘法原理的。也可以使用數據擬合工具箱cftool擬合。
Ⅶ 最小二乘法在matlab中怎麼實現啊
matlab中用最小二乘擬合的常用函數有polyfit(多項式擬合)、nlinfit(非線性擬合)以及regress(多元線性回歸)。自變數有個或以上時,應變數一個,可以使用的有nlinfit和regress,線性時用regress,非線性時用nlinfit。對於進階matlab使用者還有更多的選擇,如擬合工具箱、fit函數、interp系列插值擬合等等。
具體介紹一下regress
regress雖然名義上只能做線性回歸但是可以把x^2等非線性量作為一個額外自變數做計算,因此在一些特殊情況下也可以做非線性擬合。
以matlab自帶的數據為樣本,示例代碼如下:(%後面的是注釋)
clc;clear;
load carsmall%此數據樣本matlab自帶
x=Weight;y=Horsepower;z=MPG;%取這3個變數作為擬合對象,x、y自變數,z應變數
plot3(x,y,z,'p');
hold on;
c=ones(length(x),1);
b=regress(z,[x,y,c]);%純線性擬合 模型z=b(1)*x+b(2)*y+b(3)
[X,Y]=meshgrid(linspace(1500,5000,10),linspace(40,240,10));
C=ones(10);
mesh(X,Y,b(1)*X+b(2)*Y+b(3)*C);
grid on;
b=regress(z,[x.^2,y.^2,x.*y,x,y,c]);%添加非線性項進行擬合
figure
plot3(x,y,z,'p');
hold on;
mesh(X,Y,b(1)*X.^2+b(2)*Y.^2+b(3)*X.*Y+b(4)*X+b(5)*Y+b(6)*C);
grid on;
Ⅷ 用matlab工具進行最小二乘法圓擬合的程序怎麼編
可以來考慮採用polyfit來擬合源,二次多項式polyfit(x,y,2),
x=[0.11 0.13 0.19 0.21 0.27 0.37 0.53 0.59 0.71 0.79 0.89 1.07];
y=[3868-1066 3733-888.3 3659-789.6 3599-710.7 3508-592.2 3463-533 3335-367.6 3257-266.5 3215-213.2 3200-193.8 3125-133.3 3131-106.6];
p=polyfit(x,y,2);
hold on;
plot(x,y,'v')
plot(x,polyval(p,x),'r');
當然,數組中的成員是需要自己寫入的,把你的數據帶入就行
Ⅸ 怎樣利用基於最小二乘原理的 matlab 多項式擬合工具箱求出放電曲線方程系數
怎樣利用基於最小二乘原理的 matlab 多項式擬合工具箱求出放電曲線方程系數
曲線擬合回
已知離散點上的答數據集,即已知在點集上的函數值,構造一個解析函數(其圖形為一曲線)使在原離散點上盡可能接近給定的值,這一過程稱為曲線擬合。最常用的曲線擬合方法是最小二乘法,該方法是尋找函數使得最小。