Tag: fminsearch

存储数据时,fminsearch在循环中覆盖

我有以下在matlab中提到的代码。 我想把所有的162行和4列写入excel文件。 当我在代码中使用xlswrite时,我只得到一行和四列,因为P的值会在每个迭代步骤中被覆盖。 如果我使用for循环内的另一个循环执行时间急剧增加。 请帮助至less把P的值写入一个数组,我可以稍后写入excel文件(当我尝试'在一个赋值A(I)= B,B和I中的元素数目必须是相同的'错误出现。) 请帮忙 function FitSMC_BC clc % Parameters: P(1)=theta_S; P(2)=theta_r; P(3)=psib; P(4)=lamda; smcdata=xlsread('asimdata'); nn=length(smcdata)-1; for i=1:nn psi=smcdata(:,1); thetaObs=smcdata(:,i+1); %Make an initial guess: Pini=[0.5 0.1 -1 1.5]; P=fminsearch(@ObFun,Pini,[],psi,thetaObs); disp(['result',num2str(i),': P=',num2str(P)]); theta=Gettheta(P,psi); end function OF=ObFun(P,psi,thetaObs) theta=Gettheta(P,psi); OF=sqrt(mean((theta – thetaObs).^2)); function theta=Gettheta(P,psi) SoilPars.theta_S=P(1); SoilPars.theta_r=P(2); SoilPars.psib=P(3); SoilPars.lamda=P(4); [theta]=thetaFun(psi,SoilPars); function [theta]=thetaFun(psi,SoilPars) theta_S=SoilPars.theta_S; theta_r=SoilPars.theta_r; psib=SoilPars.psib; lamda=SoilPars.lamda; theta=theta_r+((theta_S-theta_r)*((psib./psi).^lamda)); […]