1樓:黎仙書雲英
%bylyqmath
clc;
clear
all;
close
all;
x=[47;8
7;12
7;167;4
28;8
28;12
28;16
28;4
60;8
60];
z=[34,5,12,34,27,49,40,45,23,67]';
fun=
@(beta,
x)beta(1)*x(:,1)+
beta(2)*x(:,2)+
beta(3);
beta0
=[1;
1;1];
beta
=nlinfit(x,z,fun,beta0);
[xt,
yt]=
meshgrid(linspace(min(x(:,1)),
max(x(:,
1))),
linspace(min(x(:,
2)),
max(x(:,
2))));zt=
fun(beta,
[xt(:)
yt(:)]);zt=
reshape(zt,
size(xt,
1),size(xt,
2));
figure;
hold
on;box
on;view(3);
plot3(x(:,
1),x(:,
2),z,
'r+');
mesh(xt,
yt,zt);
title(sprintf('by
lyqmath
擬合結果:z
=%.3f*x
+%.3f*y
+%.3f',
beta(1),
beta(2),
beta(3)),
'fontweight',
'bold',
'color',
'r');
如何用matlab進行已知函式的非線性擬合
2樓:匿名使用者
首先將y和x1,baix2,x3都變為列
向量,就是80x1的矩du
陣zhi
如果原來是dao行向量1x80的矩陣用y=y.'或x1=x1.『轉置一下就專可以了
將x1 x2 x3合拼為屬80x3的矩陣
x=[x1 x2 x3];
然後建立函式控制代碼
fun=@(a,x) a(1)*x(:,1)+a(2)*x(:,2)+(a(3)*x(:
,1)+a(4)*x(:,1)).*(1+exp(a(5)+a(6)*x(:
,3)));
其中a1=a(1),a2=a(2),b1=a(3),b2=a(4),c=a(5),d=a(6);
a0=[* * * * * *]; %這裡要為6個引數賦予一個初值
aa=nlinfit(x,y,fun,a0); %呼叫nlinfit進行擬合,得到的aa是6個值的向量,對應原來的6個引數
這裡關鍵是初值的選擇,如果初值和結果很接近,那麼擬合很快收斂
如果初值選擇不恰當,可能計算收斂慢,甚至不收斂,得不到結過
matlab 中非線性擬合nlinfit中如何進行殘差分析
3樓:匿名使用者
簡單方法是用擬合工具箱:
cftool
擬合後左邊框裡面就有殘差分析結果
4樓:瀟湘小水滴
[b, bint,r,rint,stats]=regress(y,x,alpha)
rcoplot(r,rint)做殘差圖
matlab中nlinfit非線性擬合求引數
袁怡圃 補充回答 資料不好 建立函式檔案 function y myfun beta,x y 2.350176 beta 1 1 1 beta 2 1 1 x 1 1 beta 2 beta 2 2.x 1 1 beta 2 1 beta 2 x 1 1 beta 2 0.5 x 2 執行 x 0....
用matlab進行曲線擬合多項式擬合
文庫精選 內容來自使用者 beyond1215 matlab學習 多項式擬合 1 1 polyfit函式 matlab的polyfit函式用於多項式擬合,其語法為 p polyfit x,y,k 其中,x,y分別是橫縱座標向量,它們不僅元素個數相同,而且同為行向量或同為列向量。k為非負整數,是待擬合...
matlab求解非線性約束方程,求教 如何用matlab解帶約束的非線性方程組
用fmincon函式就可以解決,以下是fmincon的說明,你照葫蘆畫就可以了。這個函式的基本形式為 x fmincon fun,x0,a,b,aeq,beq,lb,ub,nonlcon,options 其中fun為你要求最小值的函式,可以單寫一個檔案設定函式,如以上給的例子中。1.如果fun中有n...