早教吧作业答案频道 -->其他-->
请Matlab高手看看我的程序问题出在哪用Levenberg-Marquardt法进行非线性拟合,运行发现前后维数不匹配,方程是D=a*t^b,其中D和b的数据在开头引用了,syms a b y x real;f=a*(x^b);Jsym=jacobian(f,[a b])A=textread('dat
题目详情
请Matlab高手看看我的程序问题出在哪
用Levenberg-Marquardt法进行非线性拟合,运行发现前后维数不匹配,方程是D=a*t^b,其中D和b的数据在开头引用了,
syms a b y x real;
f=a*(x^b);
Jsym=jacobian(f,[a b])
A=textread('data.txt');
data_1=A(1:100,1:1);
obs_1=A(1:100,2:2);
a0=10; b0=0.5;
Ndata=length(obs_1); %the number of data
Nparams=2; %dimension of parameters
n_iters=50;
lamda=0.01; %fudge factor
updateJ=1; %variable assignment
a_est=a0;
b_est=b0;
for it=1:n_iters
if updateJ==1
J=zeros(Ndata,Nparams);
for i=1:length(data_1)
J(i,:)=[(data_1(i)^b_est)+a_est*data_1(i)*(data_1(i)^b_est)]; %compute Jacobian Matrix
end
y_est = a_est*(data_1^b_est);
d=obs_1-y_est; %compute the error
H=J'*J; %compute Hessian Matrix
if it==1 % if it is the first iteration,calculate the error
e=dot(d,d);
end
end
H_lm=H+(lamda*eye(Nparams,Nparams));
dp=inv(H)*(J'*d(:)); %compute the step
g = J'*d(:);
a_lm=a_est+dp(1);
b_lm=b_est+dp(2);
y_est_lm = a_lm*(data_1^b_lm); %compute the new y and error corresponding to the estimate value
d_lm=obs_1-y_est_lm;
e_lm=dot(d_lm,d_lm);
if e_lm
用Levenberg-Marquardt法进行非线性拟合,运行发现前后维数不匹配,方程是D=a*t^b,其中D和b的数据在开头引用了,
syms a b y x real;
f=a*(x^b);
Jsym=jacobian(f,[a b])
A=textread('data.txt');
data_1=A(1:100,1:1);
obs_1=A(1:100,2:2);
a0=10; b0=0.5;
Ndata=length(obs_1); %the number of data
Nparams=2; %dimension of parameters
n_iters=50;
lamda=0.01; %fudge factor
updateJ=1; %variable assignment
a_est=a0;
b_est=b0;
for it=1:n_iters
if updateJ==1
J=zeros(Ndata,Nparams);
for i=1:length(data_1)
J(i,:)=[(data_1(i)^b_est)+a_est*data_1(i)*(data_1(i)^b_est)]; %compute Jacobian Matrix
end
y_est = a_est*(data_1^b_est);
d=obs_1-y_est; %compute the error
H=J'*J; %compute Hessian Matrix
if it==1 % if it is the first iteration,calculate the error
e=dot(d,d);
end
end
H_lm=H+(lamda*eye(Nparams,Nparams));
dp=inv(H)*(J'*d(:)); %compute the step
g = J'*d(:);
a_lm=a_est+dp(1);
b_lm=b_est+dp(2);
y_est_lm = a_lm*(data_1^b_lm); %compute the new y and error corresponding to the estimate value
d_lm=obs_1-y_est_lm;
e_lm=dot(d_lm,d_lm);
if e_lm
▼优质解答
答案和解析
你没有正确使用点乘,y_est = a_est*(data_1^b_est)应改为y_est = a_est*(data_1.^b_est);y_est_lm = a_lm*(data_1^b_lm)改为y_est_lm = a_lm*(data_1.^b_lm)就OK了.中间一定要加“.”.
看了 请Matlab高手看看我的程...的网友还看了以下:
下列哪项不属于中药配伍禁忌( )A.贝母配乌头B.芍药配藜芦C.硫黄配厚朴## 2020-05-17 …
将用户程序中的逻辑地址转换为CPU执行程序指令时能正确访问的物理地址的过程称为 ()。A.地址分配B 2020-05-24 …
在以下存储管理方案中,哪一个不适用于多道程序设计系统?()A.单一连续分配B.固定分区分配C.动态分 2020-05-24 …
关于C程序,下面说法正确的是A、程序总是从文件中第一个函数开始执行B、只有main函数才能调用其它函 2020-11-16 …
王某一开始在国有企业上班,下岗后给私营企业老板打工,最后大量雇佣别人为自己打工,其主要收入分配方式变 2020-12-01 …
下列花序中,花的开放次序由上向下的是()A.轮伞花序B.头状花序C.复总状花序D.伞房花序 2020-12-05 …
具有下列哪一花序类型的植物,花通常是单性的()A.总状花序B.柔荑花序C.伞形花序D.头状花序 2020-12-05 …
菊科植物花序的特点是A.穗状花序B.头状花序C.总状花序D.伞形花序 2020-12-05 …
2013年11月12日,中共十八届三中全会中提出,深化我国的分配制度改革,形成合理有序的收入分配格局 2020-12-29 …
为了实现社会公平、形成合理有序的收入分配格局,必须坚持和完善的分配制度是()A按生产要素分配B按个体 2021-01-20 …