天天看点

matlab计算轮廓曲率半径,【转】求最小曲率半径matlab源程序

%%%

求最小曲率半径matlab源程序整个过程 以下是对一组数据拟合后,并求其最小曲率半径!

%%%%%%%源程序

%第一组数据程序和结果

%曲线拟合

x=[0.001466076582203120,0.001466076582203120,0.007867945866887910,0.029028396369196500,0.064850348408757000,0.114847634036703000

,0.179857809851284000,0.256472115900471000,0.346032163917000000,0.446908276311085000,0.558167235728009000,0.679625006553800000,0.811804517522088000,0.953826665263938000,1.103098808313560000,1.257912554526870000,1.421735083687920000,1.585596243127590000,1.753753132440840000,1.926408396320340000,2.103628721565150000,2.285495016043940000,2.473553805063090000,2.664923929704930000,2.858581813319590000,3.052878903239810000,3.247388368306910000,3.444932413105000000,3.641946194536170000,3.840109184755890000,4.038799974602770000,4.236609298669690000,4.436706161790530000,4.630421730982530000];

y=[-1.266698069156120000,-0.795034253259822000,-0.536846564521161000,-0.389340648830710000,-0.190127737864314000

,0.004594005064957550,0.197781700533289000,0.383100657685603000,0.564283866316304000,0.738546274850816000,0.906618548027954000,1.067650359336760000,1.219336428259920000,1.364059248556400000,1.497120173080330000,1.624754330754200000,1.743869921054370000,1.856159976556430000,1.964089389655610000,2.064712726493000000,2.154993965385700000,2.235005549082410000,2.304149749567330000,2.365347573221590000,2.415603187812580000,2.465664264085330000,2.503358468468860000,2.533506872783940000,2.557337071001430000,2.570638005068810000,2.574691391312200000,2.565304730866760000,2.546311602612080000,2.515724108520250000];

p2=polyfit(x,y,2);

p3=polyfit(x,y,3);

p7=polyfit(x,y,7);

p10=polyfit(x,y,10);

disp('二次拟合曲线'),poly2str(p2,'x')

disp('三次拟合曲线'),poly2str(p3,'x')

disp('七次拟合曲线'),poly2str(p7,'x')

disp('十次拟合曲线'),poly2str(p10,'x')

x1=0:0.001:5;

y2=polyval(p2,x1);

y3=polyval(p3,x1);

y7=polyval(p7,x1);

y10=polyval(p10,x1);

%^结果

二次拟合曲线 =-0.26009 x^2 + 1.7602 x - 0.30805

三次拟合曲线 =0.080148 x^3 - 0.78555 x^2 + 2.6038 x - 0.48873

七次拟合曲线 =0.01144 x^7 - 0.19995 x^6 + 1.4047 x^5 - 5.0742 x^4 +

10.0226 x^3 - 10.8175 x^2 + 6.7818 x - 0.76727

十 次拟合曲线 = -0.0050218 x^10 + 0.12089 x^9 - 1.2474 x^8 + 7.207 x^7 -

25.5682 x^6+ 57.473 x^5 - 81.5968 x^4 + 70.9115 x^3 - 35.7353 x^2 +

10.7184 x- 0.84748 %求二次曲线下的最小曲率半径

syms x

y=-0.26009*x^2+1.7602*x-0.30805;

k2=diff(y,2);

k2=abs(k2);

k1=diff(y,1);

k=k2./((1+k1.^2).^(3/2)); %曲率求解

x=[0.001466076582203120,0.001466076582203120,0.007867945866887910,0.029028396369196500,0.064850348408757000,0.114847634036703000

,0.179857809851284000,0.256472115900471000,0.346032163917000000,0.446908276311085000,0.558167235728009000,0.679625006553800000,0.811804517522088000,0.953826665263938000,1.103098808313560000,1.257912554526870000,1.421735083687920000,1.585596243127590000,1.753753132440840000,1.926408396320340000,2.103628721565150000,2.285495016043940000,2.473553805063090000,2.664923929704930000,2.858581813319590000,3.052878903239810000,3.247388368306910000,3.444932413105000000,3.641946194536170000,3.840109184755890000,4.038799974602770000,4.236609298669690000,4.436706161790530000,4.630421730982530000];

kk=subs(k);

kk=double(kk);

mk=max(kk) %最大曲率

minQL=1/mk %最小曲率半径

%结果

mk = 0.5194

minQL =1.9253

%求十次曲线下的最小曲率半径

syms x

y=-0.0050218*x^10+0.12089*x^9-1.2474*x^8+7.207*x^7-25.5682*x^6+57.473*x^5*-81.5968*x^4+70.9115*x^3-35.7353*x^2+10.7184*x-0.84748;

k2=diff(y,2);

k2=abs(k2);

k1=diff(y,1);

k=k2./((1+k1.^2).^(3/2));

x=[0.001466076582203120,0.001466076582203120,0.007867945866887910,0.029028396369196500,0.064850348408757000,0.114847634036703000

,0.179857809851284000,0.256472115900471000,0.346032163917000000,0.446908276311085000,0.558167235728009000,0.679625006553800000,0.811804517522088000,0.953826665263938000,1.103098808313560000,1.257912554526870000,1.421735083687920000,1.585596243127590000,1.753753132440840000,1.926408396320340000,2.103628721565150000,2.285495016043940000,2.473553805063090000,2.664923929704930000,2.858581813319590000,3.052878903239810000,3.247388368306910000,3.444932413105000000,3.641946194536170000,3.840109184755890000,4.038799974602770000,4.236609298669690000,4.436706161790530000,4.630421730982530000];

kk=subs(k);

kk=double(kk);

mk=max(kk)

minQL=1/mk

%结果

mk =10.6374

minQL = 0.0940