| 查看: 821 | 回复: 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客户端 |
» 猜你喜欢
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有176人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
求助NH4V4O10晶体的CIF文件
已经有0人回复












回复此楼