24小时热门版块排行榜    

查看: 758  |  回复: 1

lavender_12

新虫 (正式写手)

[求助] 求拐点

我在做高斯拟合时,手动拟合的,求拐点。程序如下:
a= xlsread('E:\UV-vis\2011414\dong 20100831 klto','dong 20100831 klto','f3:g563');%0831klto 以abs 中hv(1240/波长)为横坐标,以(2.303*abs*hv)^2 为纵坐标计算
plot(a(:,1),a(:,2))
cftool(a(:,1),a(:,2))
syms x
a1 =      -32.75 ;
       b1 =       5.169 ;
       c1 =    0.001421 ;
       a2 =       215.7 ;
       b2 =       5.317 ;
       c2 =      0.1951 ;
       a3 =         227 ;
       b3 =       5.057 ;
       c3 =      0.2606 ;
       a4 =       168.8 ;
       b4 =       4.735 ;
       c4 =      0.2747 ;
       a5 =       156.4 ;
       b5 =       4.391 ;
       c5 =      0.3278 ;
       a6 =           0 ;
       b6 =        4.29 ;
       c6 =   6.22e-005 ;
       a7 =       151.7 ;  
       b7 =       3.947 ;  
       c7 =      0.4023 ;
       y=a1*exp(-((x-b1)/c1)^2) + a2*exp(-((x-b2)/c2)^2) + ...
              a3*exp(-((x-b3)/c3)^2) + a4*exp(-((x-b4)/c4)^2) + ...
              a5*exp(-((x-b5)/c5)^2) + a6*exp(-((x-b6)/c6)^2) + ...
              a7*exp(-((x-b7)/c7)^2)
         Y=diff(y,x,2);
          x=solve(Y,x);
          y=eval(y);
          c=[x,y] %
那么这时候会求出来一个c = [ 3.6925373244157819483595872056264, 103.34849107643072995968936356082],但是有可能有2个拐点,那么第二个求出来的c其实掩盖了第一个求出来的值,这样,我就没法知道第一个c值了,我该怎么做?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
先画图知道x的大概范围,然后使用
evalin(symengine, 'numeric::solve(Y), x =0...10)')
获得该范围内的解。
solve好像默认只给最先找到的解
showmethemoney
2楼2012-05-24 16:32:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lavender_12 的主题更新
信息提示
请填处理意见