例子一
% 拟合椭圆型曲线段
clo all;
% 设出圆锥曲线方程
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)*x(:,2)+p(6);%椭圆一般方程
% 离散数据点
Up=xlsread('D:\\CT\\Up.xls');%excel文件路径
UpX=Up(:,1);
UpY=Up(:,2);
% p0系数初值
p0=[1 1 1 1 1 1];
warning off
% 拟合系数,最小二乘方法
p=nlinfit(Up,zeros(size(Up,1),1),F,p0);
plot(UpX,UpY,'r.');
hold on;
UpMinx=min(UpX);
UpMaxx=max(UpX);
UpMiny=min(UpY);
UpMaxy=max(UpY);
% 作图
ezplot(@(x,y)F(p,[x,y]),[-1+UpMinx,1+UpMaxx,-1+UpMiny,1+UpMaxy]);
title('曲线拟合');
legend('样本点','拟合曲线');
% 设出圆锥曲线方程
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)*x(:,2)+p(6);%椭圆一般方程
% 马车英文离散数据点
Down=xlsread('D:\\CT\\Down.xls');
DownX=Down(:,1);
DownY=Down(:,2);
% p0kayak系数初值
p0=[1 1 1 1 1 1];
warning off
% 拟合系数,最小二乘方法
p=nlinfit(Down,zeros(size(Down,1),1),F,p0);
plot(DownX,DownY,'r.');
hold on;
DownMinx=min(DownX);
DownMaxx=max(DownX);
DownMiny=min(DownY);
DownMaxy=max(DownY);
% 作图
ezplot(@(x,y)F(p,[x,y]),[-1+DownMinx,1+DownMaxx,-1+DownMiny,1+DownMaxy]);
title('曲线拟合');
legend('样本点','拟合曲线信笺');
例子二
具体不做说明,留着以后查找方便。
clear
clc
load ('S.txt');
r=S(:,1);
t=S(:,2);
x=r.*cos(t*pi/180);%转换成直角坐标recipeo
y=r.*sin(t*pi/180);%转换成直角坐标
XY=[x,y];
save& XY -ascii%保存转换后的直角坐标
%%%%%%%%%%%%%%%%曲线方程拟合%%%%%%%%%%%%%%%%%
F=@(p,XY)p(1)*XY(:,1).^2+p(2)*XY(:,1).*XY(:,2)+p(3)*XY(:,2).^2+p(4)*XY(:,1)+p(5)*XY(:,2)+p(6);%椭圆一般方程
p0=[1 1 1 1 1 1];
%%%%%%拟合系数,最小二乘法%%%%%%
p=nlinfit(XY, zeros(size(XY,1),1), F, p0); 初中英语作文题 %bottle是什么意思调整画图输出样式及大小
miscarriage
s=4800/127;%转换像素
figure('position',[200 200 16*s 16*s]);%确定绘图尺寸
axes('linewidth',3, 'box', 'on', 'FontSize',11,'FontName','Times New Roman');
plot(XY(:,1), XY(:,2), 'ro'); hold on;
xmin=min(XY(:, 1)); xmax=max(XY(:, 1));
ymin=min(XY(:, 2)); ymax=max(XY(:, 2))
ezplot(@(x,y)F(p,[x,y]), [-1+xmin,1+xmax,-1+ymin,1+ymax]);
title('隧道断面曲线拟合'); legend('监测点', '拟合曲线');
grid on
p=p./p(6);
xc=(p(2)*p(5)-2*p(3)*p(4))/(4*p(1)*p(4)-p(2)^2);%求椭圆中心坐标
yc=(p(2)*p(4)-2*p(1)*p(5))/(4*p(1)*p(4)-p(2)^2);%求椭圆中心坐标
angle=(1/2)*atan(p(2)*(p(1)-p(3)))%求椭圆倾斜角度
a=sqrt(2*(p(1)*xc^2+p(3)*yc^2+p(2)*xc*yc-1)/(p(1)+p(3)+((p(1)-p(3))^2+p(2)^2)^(1/2)))%求椭圆长轴
英语六级答案购买b=sqrt(2*(p(1)*xc^2+p(3)*yc^2+p(2)*xc*yc-1)/(p(1)+p(3)-((p(1)-p(3))^2+p(2)^2)^(1/2)))%求椭圆短轴
u=(a-b)/a%计算椭圆扁率
%%%%%%%%%将扁率小数换算成千分数%%%%%%%%%
m=size(u);B=[];
B=u*1000;
for i=1:m
B=[num2str(B(i)),'‰'];
B=[B 13];%13为回车键的ASCII码
葡萄牙语在线翻译
end
%%%%%%%%%%%%%%%绘图加注%%%%%%%%%%%%%%%%
hold on
plot(xc,yc,'ro')
text(3.0,-2.8,['扁率=',num2str(B)],'verticalAlignment','bottom','HorizontalAlignment','right','FontSize',12,'FontName','Times New Roman')
%%%%%%%%%%%%为图中每个点加注坐标努力的英文%%%%%%%%%%%%
for j=1:length(x)
str=strcat('(',num2str(x(j)),',',num2str(y(j)),')');
text(x(j),y(j),str,'FontSize',10,'FontName','Times New Roman');
end