| 查看: 919 | 回复: 0 | ||
[求助]
matlab有限定条件的数据拟合
|
|
本人用lsqcurvefit对阻抗模型进行数据拟合,拟合公式Z=a(1)+(2000.*pi.*xdata).*a(2).*1i+(((((((a(5).^(-1))+(((2000.*pi.*xdata).*a(6).*1i).^(-1))).^(-1))+(2000.*pi.*xdata).*a(4).*1i).^(-1))+(a(3).^(-1))).^(-1)),其中xdata为自变量,Z为因变量。a(1)~a(6)应均为正实数,但拟合出来的结果a(1)~a(6)都为复数。恳请问一下如何加限制条件?或者事先定义a(1)~a(6)为正实数?十分感谢! 代码如下 %输入选定频率值xdata/kHz xdata=[0.02 1 2 3 4 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100]; wL=[0.021296228 0.825987526 1.635136116 2.428765239 3.201157196 3.947096943 7.27215855 10.04304322 12.51484828 14.85659141 17.14744073 19.41818386 21.67950221 23.93705066 26.18831591 28.43047055 30.66445705 32.89310284 35.10666899 37.31269531 39.50866854 41.69490283 43.87611057 46.0450661 48.20459685 ]'; R=[0.09208 0.14407 0.2094 0.31065 0.44347 0.60245 1.596 2.585 3.398 4.045 4.574 5.024 5.424 5.792 6.139 6.47 6.791 7.102 7.406 7.703 7.995 8.28 8.559 8.832 9.1 ]'; Z=wL.*1i+R; fun=@(a,xdata)a(1)+(2000.*pi.*xdata).*a(2).*1i+(((((((a(5).^(-1))+(((2000.*pi.*xdata).*a(6).*1i).^(-1))).^(-1))+(2000.*pi.*xdata).*a(4).*1i).^(-1))+(a(3).^(-1))).^(-1)); a0=[2.82,0.000009,25,0.00002,3.57,0.0000115]; options = optimset('MaxFunEvals',15000,'MaxIter',3000); a=lsqcurvefit(fun,a0,xdata,Z,[],[],options); %绘图观察 times = linspace(xdata(1),xdata(end)); subplot(2,1,1); plot(xdata,R,'ko',times,real(fun(a,times)),'b-') legend('R Data','R Fitted exponential') title('Resistance Data and Fitted Curve') subplot(2,1,2); plot(xdata,wL,'ko',times,imag(fun(a,times)),'b-') legend('L Data','L Fitted exponential') title('Inductance Data and Fitted Curve') 发自小木虫Android客户端 |
» 猜你喜欢
求助中医院临床中医中标的青年标书学习,谢谢
已经有6人回复
浙大物院表面物理课题组长期招收普博及直博学生
已经有259人回复
物理学I论文润色/翻译怎么收费?
已经有97人回复
【征稿】Springer Nature热电专题 Discover Materials / Discover Chemistry
已经有47人回复
25届硕士申请,材料计算方向
已经有2人回复
课题组招1-2名硕士
已经有1人回复
机时越来越贵之后,我把一部分 DFT 流程搬到了 AI 计算平台上
已经有0人回复
斯坦福大学与Elsevier世界前2%学者新排名查询
已经有1人回复
27申博推荐:南京航空航天大学国际前沿院光学方向招收博士生!
已经有19人回复
华南师范大学+双一流学科物理学+广东省杰青团队2027年博士招生+机器学习驱动材料设计
已经有1人回复
apl投稿状态
已经有0人回复










回复此楼