24小时热门版块排行榜    

查看: 1516  |  回复: 6

文家武

金虫 (小有名气)

[求助] MATLAB关于lsqcurvefit程序几个错误,求大神指导一下

t=[189 203 211 217 225 189 242 199 209 189 199 209 209 217 219 ...
   227 227 233 191 199 199 209 209 217 217 227 226 234 234 242 ...
   226 191 201 199 211 209 217 217 226 225 233 189 199 199 209 ...
   209 217 217 225 225 233 233 242 189 199 199 209 209 217 217 ...
   190 200 200 210 210 218 218 226 226 234 190 200 210 210 218 ...
   218 226 234 190 200 200 208 208 218 218 226 226 234 234 189 ...
   199 199 209 209 218 218 226 226 234 234 200 210 218 226 234 ...
   242 190 200 200 210 210 218 218 226 226 234 234 242 210 218 ...
   218 225 225 233 233 249 190 200 200 210 210 218 218 226 226 ...
   234 234 242 190 200 200 210 210 218 218 226 234 234 242 190 ...
   200 200 210 210 218 218 226 226 234 234 242 190 200 200 210 ...
   210 218 226 234 234 242 191 199 199 209 211 217 217 226 226 ...
   234 233 242]';
T=273.15+t;
p=[260 258 256 260 261 261 258 259 260 291 292 292 292 291 291 ...
   291 292 291 288 287 287 287 291 291 291 290 290 290 289 290 ...
   290 291 291 290 289 289 288 289 288 289 288 290 288 290 290 ...
   290 291 290 288 288 288 288 286 228 231 228 228 227 227 228 ...
   231 231 279 279 280 289 289 289 289 289 288 288 288 287 288 ...
   288 288 287 285 287 287 287 286 288 297 297 297 296 294 297 ...
   297 297 297 296 299 297 297 300 299 298 297 297 298 300 297 ...
   297 299 297 297 297 297 297 297 297 297 298 297 297 297 296 ...
   296 296 296 296 297 294 296 297 297 297 297 296 297 296 297 ...
   296 297 297 299 299 298 298 298 298 297 297 297 295 297 297 ...
   297 297 297 300 297 297 297 298 297 297 297 297 297 297 296 ...
   297 300 298 299 297 297 249 245 248 250 243 250 250 249 250 ...
   249 247 250]';
P=1/145*p;
yC2H4Oout=[0.00732 0.01382 0.00923 0.02204 0.02308 0.05240 0.02534 0.01064 ...
    0.01714 0.00641 0.01258 0.01051 0.01492 0.01717 0.02220 0.01991 ...
    0.02404 0.02543 0.00483 0.00849 0.00587 0.00724 0.01041 0.01188 ...
    0.01562 0.01327 0.01675 0.01810 0.02016 0.01941 0.01706 0.07210 ...
    0.00901 0.01269 0.01094 0.01476 0.01673 0.02109 0.01872 0.02270 ...
    0.02398 0.00602 0.00749 0.01060 0.00897 0.01225 0.01385 0.01759 ...
    0.01528 0.01860 0.01933 0.02102 0.01830 0.00569 0.00755 0.01123 ...
    0.00966 0.01363 0.01613 0.02103 0.00418 0.00547 0.00799 0.00682 ...
    0.00935 0.01041 0.01309 0.01135 0.01366 0.01370 0.00707 0.01268 ...
    0.01034 0.01404 0.01559 0.02008 0.02209 0.02716 0.00569 0.00747 ...
    0.01108 0.00944 0.01327 0.01574 0.02017 0.01802 0.02197 0.02356 ...
    0.02545 0.00510 0.00697 0.01065 0.01129 0.01304 0.01565 0.02018 ...
    0.01975 0.02160 0.02227 0.02414 0.00727 0.01304 0.01505 0.01815 ...
    0.02527 0.02277 0.00414 0.00518 0.00724 0.00620 0.00840 0.00932 ...
    0.01132 0.00976 0.01158 0.01133 0.01213 0.01098 0.00897 0.01020 ...
    0.01389 0.01172 0.01493 0.01638 0.01902 0.01801 0.00555 0.00706 ...
    0.01012 0.00822 0.01150 0.01333 0.01742 0.01519 0.01959 0.02208 ...
    0.02478 0.02494 0.00314 0.00468 0.00724 0.00569 0.00809 0.00896 ...
    0.01156 0.01166 0.01203 0.01343 0.01307 0.00636 0.00837 0.00682 ...
    0.00828 0.01122 0.01259 0.01537 0.01344 0.01585 0.01587 0.01704 ...
    0.01465 0.00483 0.00626 0.00892 0.00761 0.01060 0.01194 0.01294 ...
    0.01565 0.01693 0.01555 0.00528 0.00696 0.01004 0.00870 0.01355 ...
    0.01481 0.01937 0.01737 0.02202 0.02270 0.02557 0.02339]';
PC2H4O=P.*yC2H4Oout;
yC2H4out=[0.2811 0.2724 0.2787 0.2624 0.2606 0.2835 0.2527 0.2773 0.2698 0.2750 ...
    0.2678 0.2701 0.2646 0.2620 0.2545 0.2606 0.2516 0.2483 0.1935 0.1891 ...
    0.1922 0.1906 0.1867 0.1849 0.1799 0.1831 0.1784 0.1758 0.1716 0.1714 ...
    0.1780 0.2731 0.2711 0.2666 0.2687 0.2641 0.2615 0.2554 0.2589 0.2526 ...
    0.2498 0.2263 0.2246 0.2207 0.2226 0.2185 0.2165 0.2112 0.2143 0.2095 ...
    0.2079 0.2040 0.2075 0.2755 0.2736 0.2691 0.2711 0.2664 0.2635 0.2567 ...
    0.3093 0.3077 0.3051 0.3061 0.3029 0.3015 0.2975 0.3000 0.2966 0.2961 ...
    0.1809 0.1743 0.1770 0.1726 0.1707 0.1643 0.1617 0.1523 0.2430 0.2409 ...
    0.2365 0.2386 0.2340 0.2309 0.2245 0.2276 0.2219 0.2188 0.2141 0.2915 ...
    0.2893 0.2849 0.2841 0.2818 0.2784 0.2721 0.2725 0.2698 0.2674 0.2632 ...
    0.2667 0.2599 0.2574 0.2530 0.2401 0.2429 0.2164 0.2153 0.2127 0.2140 ...
    0.2113 0.2101 0.2071 0.2093 0.2065 0.2054 0.2044 0.2053 0.2146 0.2131 ...
    0.2083 0.2112 0.2072 0.2047 0.2001 0.1993 0.1961 0.1944 0.1908 0.1931 ...
    0.1893 0.1871 0.1815 0.1847 0.1788 0.1748 0.1693 0.1673 0.1448 0.1428 ...
    0.1398 0.1417 0.1388 0.1376 0.1341 0.1338 0.1330 0.1303 0.1303 0.2652 ...
    0.2620 0.2639 0.2620 0.2585 0.2566 0.2526 0.2553 0.2516 0.2511 0.2481 ...
    0.2517 0.2300 0.2282 0.2249 0.2266 0.2227 0.2209 0.2193 0.2143 0.2113 ...
    0.2121 0.2716 0.2691 0.2660 0.2676 0.2614 0.2601 0.2530 0.2566 0.2498 ...
    0.2471 0.2426 0.2426]';
PC2H4=P.*yC2H4out;
yO2out=[0.06231 0.05449 0.05981 0.04082 0.03741 0.06442 0.02132 0.05835 ...
    0.04951 0.06657 0.05919 0.06168 0.05596 0.05231 0.04340 0.04680 ...
    0.03900 0.03241 0.05041 0.04615 0.04905 0.04721 0.04327 0.04104 ...
    0.03460 0.03859 0.03241 0.02796 0.02064 0.01874 0.03172 0.06225 ...
    0.06017 0.05550 0.05750 0.05254 0.04934 0.04153 0.04517 0.03748 ...
    0.03198 0.05045 0.04855 0.04475 0.04654 0.04245 0.03978 0.03317 ...
    0.03665 0.03042 0.02690 0.02067 0.02449 0.06765 0.06541 0.06124 ...
    0.06283 0.05806 0.05394 0.04613 0.03271 0.03100 0.02802 0.02942 ...
    0.02633 0.02443 0.01978 0.02193 0.01770 0.01602 0.07344 0.06637 ...
    0.06950 0.06484 0.06256 0.05479 0.05120 0.03519 0.06439 0.06223 ...
    0.05790 0.05969 0.05481 0.05103 0.04305 0.04643 0.03886 0.03293 ...
    0.02493 0.06047 0.05830 0.05388 0.05276 0.05034 0.04604 0.03756 ...
    0.03761 0.03361 0.02909 0.02149 0.06126 0.05475 0.05180 0.04618 ...
    0.02571 0.02765 0.02747 0.02603 0.02327 0.02449 0.02151 0.01964 ...
    0.01563 0.01799 0.01415 0.01320 0.00973 0.00936 0.04324 0.04176 ...
    0.03592 0.03951 0.03423 0.03090 0.02342 0.01918 0.06795 0.06607 ...
    0.06234 0.06462 0.06059 0.05805 0.05127 0.05499 0.04769 0.04136 ...
    0.03230 0.02677 0.03365 0.03161 0.02795 0.03021 0.02693 0.02536 ...
    0.02058 0.02037 0.01869 0.01386 0.01366 0.03660 0.03397 0.03573 ...
    0.03363 0.02964 0.02712 0.02193 0.02504 0.02029 0.01824 0.01347 ...
    0.01724 0.04097 0.03892 0.03537 0.03689 0.03254 0.03005 0.02747 ...
    0.01933 0.01418 0.01359 0.06696 0.06513 0.06124 0.06274 0.05693 ...
    0.05458 0.04683 0.04967 0.04074 0.03502 0.03006 0.02419]';
PO2=P.*yO2out;
yCO2out=[0.04472 0.04808 0.04572 0.05468 0.05660 0.04391 0.06682 0.04637 ...
    0.05027 0.05274 0.05579 0.05477 0.05715 0.05898 0.06337 0.06183 ...
    0.06578 0.06977 0.08391 0.08564 0.08452 0.08531 0.08696 0.08800 ...
    0.09106 0.08923 0.09225 0.09485 0.09909 0.10058 0.09262 0.05226 ...
    0.05307 0.05503 0.05426 0.05638 0.05792 0.06180 0.06011 0.06406 ...
    0.06739 0.04276 0.04350 0.04516 0.04446 0.04625 0.04754 0.05086 ...
    0.04923 0.05242 0.05457 0.05827 0.05654 0.05529 0.05621 0.05788 ...
    0.05737 0.05939 0.06134 0.06503 0.07002 0.07072 0.07190 0.07139 ...
    0.07271 0.07365 0.07591 0.07504 0.07713 0.07828 0.05003 0.05300 ...
    0.05169 0.05363 0.05469 0.05842 0.06025 0.06937 0.06165 0.06253 ...
    0.06426 0.06361 0.06564 0.06744 0.07136 0.06981 0.07359 0.07711 ...
    0.08184 0.09512 0.09604 0.09774 0.09832 0.09936 0.10143 0.10561 ...
    0.10578 0.10781 0.11065 0.11511 0.07097 0.07408 0.07549 0.07829 ...
    0.08968 0.08931 0.05095 0.05151 0.05275 0.05217 0.05356 0.05452 ...
    0.05661 0.05552 0.05755 0.05830 0.06040 0.06102 0.10952 0.11013 ...
    0.11276 0.11118 0.11362 0.11538 0.11951 0.12276 0.06579 0.06675 ...
    0.06822 0.06735 0.06900 0.07013 0.07330 0.07164 0.07513 0.07858 ...
    0.08376 0.08749 0.06779 0.06869 0.07034 0.06935 0.07078 0.07160 ...
    0.07397 0.07413 0.07515 0.07797 0.07828 0.03082 0.03214 0.03125 ...
    0.03220 0.03397 0.03527 0.03793 0.03645 0.03893 0.04029 0.04316 ...
    0.04132 0.08067 0.08162 0.08305 0.08257 0.08452 0.08578 0.08727 ...
    0.09184 0.09482 0.09569 0.04802 0.04873 0.05034 0.04975 0.05221 ...
    0.05326 0.05689 0.05568 0.06042 0.06395 0.06634 0.07103]';
PCO2=P.*yCO2out;
EDC=[0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 ...
     0.28 0.28 0.28 0.28 0.28 0.28 0.28 0.28 0.28 ...
     0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 ...
     0.35 0.35 0.35 0.35 0.40 0.40 0.40 0.40 0.40 ...
     0.40 0.40 0.40 0.40 0.40 0.09 0.09 0.09 0.09 ...
     0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.28 ...
     0.28 0.28 0.28 0.28 0.28 0.28 0.36 0.36 0.36 ...
     0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.45 0.45 ...
     0.45 0.45 0.45 0.45 0.45 0.45 0.35 0.35 0.35 ...
     0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.29 ...
     0.29 0.29 0.29 0.29 0.29 0.29 0.29 0.29 0.29 ...
     0.29 0.41 0.41 0.41 0.41 0.41 0.41 0.18 0.18 ...
     0.18 0.18 0.18 0.18 0.18 0.18 0.18 0.18 0.18 ...
     0.18 0.68 0.68 0.68 0.68 0.68 0.68 0.68 0.68 ...
     0.54 0.54 0.54 0.54 0.54 0.54 0.54 0.54 0.54 ...
     0.54 0.54 0.54 0.30 0.30 0.30 0.30 0.30 0.30 ...
     0.30 0.30 0.30 0.30 0.30 0.34 0.34 0.34 0.34 ...
     0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.17 ...
     0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 ...
     0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 ...
     0.27 0.27 0.27]';
Fin=[500 499 1200 500 699 700 700 700 500 699 499 1200 698 899 499 ...
     1200 700 900 700 498 898 1200 699 900 499 1200 700 900 500 700 ...
     700 699 899 499 1200 699 900 500 1199 699 898 698 900 499 1200 ...
     699 898 498 1200 700 900 500 1199 698 900 499 1199 699 897 502 ...
     699 899 499 1200 698 899 500 1199 698 900 699 499 1199 699 899 ...
     499 699 500 698 898 500 1200 698 900 499 1200 700 898 500 699 ...
     894 499 881 699 900 500 917 698 900 498 900 700 900 1100 500 ...
     1099 699 899 499 1200 698 900 499 1198 698 898 499 700 699 899 ...
     499 1139 699 898 500 899 699 898 499 1199 699 900 499 1198 700 ...
     899 498 700 699 900 498 1197 700 900 498 699 899 499 700 700 ...
     699 900 1199 700 899 499 1199 699 898 499 1199 700 898 502 1198 ...
     703 900 1200 900 499 700 699 900 499 1199 699 899 498 1199 699 ...
     900 499 699]';
yCO2in=[0.04210 0.04220 0.04220 0.04220 0.04230 0.04220 0.04230 0.04230 ...
        0.04220 0.05068 0.05070 0.05068 0.05067 0.05052 0.05047 0.05050 ...
        0.05051 0.05047 0.08222 0.08200 0.08223 0.05497 0.05498 0.05501 ...
        0.05496 0.05500 0.05497 0.05493 0.05496 0.05487 0.05487 0.06950 ...
        0.06950 0.06945 0.06946 0.06944 0.06948 0.06948 0.06943 0.06960 ...
        0.06961 0.05636 0.05633 0.04057 0.04058 0.04055 0.04056 0.04057 ...
        0.04054 0.04055 0.04054 0.04047 0.04033 0.05322 0.05352 0.05352 ...
        0.05355 0.05358 0.05365 0.05360 0.06873 0.06869 0.06873 0.06864 ...
        0.06862 0.06861 0.06858 0.06862 0.06846 0.06863 0.04721 0.04727 ...
        0.04725 0.04727 0.04727 0.04726 0.04726 0.04732 0.05986 0.05987 ...
        0.05985 0.05983 0.05986 0.05984 0.05986 0.05986 0.05989 0.05988 ...
        0.05991 0.09348 0.09353 0.09360 0.09351 0.09351 0.09351 0.09360 ...
        0.09354 0.09363 0.09355 0.09365 0.06830 0.03833 0.06829 0.06832 ...
        0.06840 0.06834 0.04940 0.04930 0.04939 0.04923 0.04921 0.04935 ...
        0.04936 0.04945 0.04946 0.04945 0.04948 0.04948 0.10567 0.10559 ...
        0.10566 0.10557 0.10565 0.10557 0.10566 0.10563 0.06424 0.06425 ...
        0.06424 0.06428 0.06427 0.06425 0.06426 0.06429 0.06428 0.06425 ...
        0.06427 0.06429 0.06656 0.06660 0.06664 0.06668 0.06668 0.06668 ...
        0.06669 0.06667 0.06672 0.06670 0.06669 0.02856 0.02858 0.02857 ...
        0.02850 0.02857 0.02856 0.02856 0.02855 0.02856 0.02858 0.02858 ...
        0.02857 0.07917 0.07911 0.07918 0.07920 0.07915 0.07924 0.07924 ...
        0.07925 0.07923 0.07924 0.04625 0.04614 0.04623 0.04618 0.04624 ...
        0.04625 0.04625 0.04619 0.04634 0.04628 0.04614 0.04625]';
f=0.5;%目前还不清楚,以后进一步研究
SF=(1+f*yCO2in)./(1+0.5*yC2H4Oout+f*yCO2out);
R=8.314e3;
Finmol=Fin.*P./(T*R);
Foutmol=SF.*Finmol;
W=4.05e-3;
R1e=Foutmol.*yC2H4Oout/W;
R2e=(Foutmol.*yCO2out-Finmol.*yCO2in)/W;
ExpData=[T,PC2H4O,PC2H4,PO2,PCO2,EDC,yCO2in,R1e,R2e];

数据m文件

-----------------------------------------------------------------------------------------------------


%function KineticsEst
clear all;
beta0=[1 1 1 1 1 1 1 1 1 1];  %参数初值
lb=[0 0 0 0 0 0 0 0 0 0];     %参数下限
ub=[+inf +inf +inf +inf +inf +inf +inf +inf +inf +inf];    %参数上限
ChemKineticsData;
format long
ExpData;    % 调入动力学实验数据
% 使用函数lsqcurvefit()进行参数估计
[beta,resnorm,residual,exitflag,output,lambda,jacobian]= ...
lsqcurvefit(@objfun,beta0,lb,ub,[],ExpData);
fprintf('\n\n使用函数lsqcurvefit()估计得到的参数值为:\n')
Output

主函数


------------------------------------------------------------------------------------------------------
function F=objfun(B,ExpData)
R1c=exp(B(5)-B(6)./ExpData(:,1)).*ExpData(:,3).*ExpData(:,4)./(1+exp( ...
    B(1)./ExpData(:,1)-B(2)).*ExpData(:,3)+exp(B(3)./ExpData(:,1)-B(4)).* ...
    ExpData(:,4)).*(1+B(9)*ExpData(:,6));
R2c=exp(B(7)-B(8)./ExpData(:,1)).*ExpData(:,3).*ExpData(:,4)./(1+exp( ...
    B(1)./ExpData(:,1)-B(2)).*ExpData(:,3)+exp(B(3)./ExpData(:,1)-B(4)).* ...
    ExpData(:,4)).*(1+B(10)*ExpData(:,6));
F1=(ExpData(:,8)-R1c)./ExpData(:,8);
F2=(ExpData(:,9)-R2c)./ExpData(:,9);
F=[F1;F2];      

目标函数m文件


------------------------------------------------------------------------------------------------------
Warning: Length of upper bounds is > length(x); ignoring extra bounds.
> In checkbounds at 38
  In lsqnsetup at 63
  In lsqcurvefit at 190
Error using lsqcurvefit (line 247)
Function value and YDATA sizes are incommensurate.


数据和目标函数m文件都没错误,只有lsqcurvefit有点问题,求大神指导,在线等。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
首先ub无上限直接用[]代替就行了
其次,函数应该有xdata,ydata,在你的objfun里expdata是xdata,F是ydata,但是在调用lsqcurvefit你没给ydata
showmethemoney
2楼2012-11-14 10:03:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文家武

金虫 (小有名气)

引用回帖:
2楼: Originally posted by csgt0 at 2012-11-14 10:03:06
首先ub无上限直接用[]代替就行了
其次,函数应该有xdata,ydata,在你的objfun里expdata是xdata,F是ydata,但是在调用lsqcurvefit你没给ydata

一定要Ydata吗?这个我用的是形式min=R-r,R知道了,r中含有参数,现在的意思是min表示ydata?   但是这个没有数据的,如何处置呢 ?
3楼2012-11-14 10:07:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

使用lsqcurvefit必须要,如果求F的最小值可以用lsqnonlin,你查查,用法跟它差不多。
showmethemoney
4楼2012-11-14 10:10:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文家武

金虫 (小有名气)

引用回帖:
4楼: Originally posted by csgt0 at 2012-11-14 10:10:07
使用lsqcurvefit必须要,如果求F的最小值可以用lsqnonlin,你查查,用法跟它差不多。

我主要是求形如::min=R-r,R知道了,r 中含有参数,求参数。
5楼2012-11-14 10:24:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
文家武: 金币+20, ★★★很有帮助 2012-11-28 22:26:55
是啊,你把objfun写成R-r的形式,不就是相当于求F的最小值了吗,求最小值用lsqnonlin就可了。
showmethemoney
6楼2012-11-14 10:55:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文家武

金虫 (小有名气)

引用回帖:
6楼: Originally posted by csgt0 at 2012-11-14 10:55:49
是啊,你把objfun写成R-r的形式,不就是相当于求F的最小值了吗,求最小值用lsqnonlin就可了。

试了下,确实可以,感觉误差好大。我再看看。谢谢。
7楼2012-11-14 11:03:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 文家武 的主题更新
信息提示
请填处理意见