用matlab進行非線性擬合nlinfit函式

時間 2021-08-30 11:14:16

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...