超级能手x
超级能手x
关注数: 60
粉丝数: 213
发帖数: 2,243
关注贴吧数: 66
python2 python3共存时pip install 出现Fatal error in launcher Fatal error in launcher: Unable to create process using '"' 解决方法: python2 -m pip install [package_name]
【转移】欢迎大家到我的CSDN博客看看 百度直接搜uiop_uiop_uiop,进入后点击“所有文章”即可
pip更换节点 b'cGlwIGluc3RhbGwgLWkgaHR0cHM6Ly9weXBpLmRvdWJhbmlvLmNvbS9zaW1wbGUvIC0tdHJ1c3RlZC1ob3N0IHB5cGkuZG91YmFuaW8uY29tIG1hdHBsb3 RsaWI='
用matlab拟合Logistic,4参数logistic 用matlab拟合Logistic曲线x=[3,5,10,12,17];y=[123.1,134.5,145.2,185 , 187.3]; Logistic模型是 f(x)=A/1+b*exp(-c*x),在进行曲线拟合时需要先估计A,b,c三个参数的值,想问一下怎么估计才能比较收敛。要不拟合的曲线误差比较大,哪个大神给一下代码!比较着急,万分感谢!!!!! 解答如下:标准logistic模型是4参数,我按照4参数拟合如下: f(x)=(a-d)/(1 + b*exp(c*x)) + d其中A和D意义比较明显,就是x趋于正负无穷大时y的最大最小值。 1)初始值本例中初始值A=150;带入首尾和中间点(x,y)到模型中,求出参数B,C,D的初始值。代码:>>[b,c,d]=solve('(150-d)/1+b*exp(-c*3)-d=123.1','(150-d)/1+b*exp(-c*10)-d=145.2','(150-d)/1+b*exp(-c*17)-d=187.3','b,c,d') %%%!!!上面这里括号有问题!!!! 2)编写m文件,进行拟合 %更详细的代码,给出更多参数。c:参数的最优解,r:各点处的拟合残差,J:雅克比矩阵的数值。 x=[3,5,10,12,17]; y=[123.1,134.5,145.2,185 , 187.3]; c0=[150,18.526857911648590940806413160078,-0.092067161737804085897956309851236,25.66025]; fun=inline('(c(1)-c(4))./(1+c(2).*exp(c(3).*x)) + c(4)','c','x'); [c,r,J]=nlinfit(x,y,fun,c0); % 其中x,y为原始数据,fun为M文件中定义的函数,c0为函数中参数的初始值; % c为参数的最优解,r为各点处的拟合残差,J为雅克比矩阵的数值。 b %最佳参数 Q=sum(r.^2) %误差平方和 SSY=std(y,1)^2; %离差平方和 R=sqrt(1-Q/SSY) t=-2.5:0.1:2.5; plot(x,y,'r*',t,fun(b,t)) % 画图,其中x,y表示一对点,后面的参数表示 颜色 和 点的形状。 %然后就是有一组点。 结论:这一组数字太差劲了,拟合失败。。。。-----------------------------这组拟合倒是不错: x=[1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010]'; y=[0.15 1.20 3.30 9.50 19.00 30.61 40.29 42.11 49.84 60.00 76.78 99.13 153.54 187.80 248.28 318.74 349.99 379.51 418.29 465.73 512.71 576.32 592.53 607.17 627.34 635.67 645.82 674.27 699.99 726.21 753.56 786.17]'; st_ = [700 20 0.2];ft_ = fittype('a/(1+b*exp(-k*(x-1979)))' ,... 'dependent',{'y'},'independent',{'x'},... 'coefficients',{'a', 'b', 'k'});[cf_,good]= fit(x,y,ft_ ,'Startpoint',st_)h_ = plot(cf_,'fit',0.95);legend off; % turn off legend from plot method callset(h_(1),'Color',[1 0 0],... 'LineStyle','-', 'LineWidth',2,... 'Marker','none', 'MarkerSize',6);hold on,plot(x,y,'*') refer1.http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.miraibio.com%2Fblog%2F2010%2F08%2Fthe-4-parameter-logistic-4pl-nonlinear-regression-model%2F2.matlab&urlrefer=b918bf5f29374ddf80cabe9a078591dc非线性拟合.PPT:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwenku.baidu.com%2Fview%2F9a7c7b88d0d233d4b14e69ec.html&urlrefer=ad31941679f54f20a6df29fb65a17ffe
闭包赋值和直接调用local variable 'a' referenced before assig 我个人的理解是:在之前使用闭包是没有对传入的值进行改动的,是直接返回出来的,当我们传入4或者5时,传入这个举动就已经赋值定义好了X和y,这都是前一章参数的功劳。而后面的写法都是对传入的值有改变(x*=x),因为x指向的是一个不可变对象—常量,我们对传入的值已经改变,也就是内存ID发生改变,那么这个被改过的x*=3得到的X则是一个新的变量,在fun2函数空间内来说,这个X是没有被定义的,所以报错。而在之前我们只是声明了一个原始X的变量,所以返回时不报错 官方解释是:由于python对变量的搜索机制引起,当在调用函数时,如果有一个函数在内部对外层函数的变量做赋值操作 ,该变量会被认为是本地的(这就是前面说的屏蔽),所以如果你修改变量的值就会把其变成局部变量,在修改的同时就会创建一个同名的局部变量来屏蔽,那么该变量的引用自然就会出现未定义,所以这就解释为何直接调用不报错,而赋值操作就会报错
py2exe
1
下一页