matlab如何拟合直线并且根据坐标轴交点求出斜率?

就是有几个已知的数据点,假设为(1,1),(2,2),(3,3),然后要求是用直线拟合并且算出该直线和X轴、Y轴的交点,还有求出斜率,具体怎么实现?... 就是有几个已知的数据点,假设为(1,1),(2,2),(3,3),然后要求是用直线拟合并且算出该直线和X轴、Y轴的交点,还有求出斜率,具体怎么实现? 展开
 我来答
q396899806
2016-12-01 · TA获得超过161个赞
知道答主
回答量:17
采纳率:100%
帮助的人:5.9万
展开全部

这个问题不难,只需要用到plotfit函数

polyfit的使用方法:

[p,s] =polyfit(x,y,n)

其中,x为准备拟合的自变量

      y为应变量,

      n为拟合的次数

      p是拟合得到的多项式的系数矩阵,其元素依次为从最高次系数到0次系数(也就是常数项).

      s用来计算拟合误差.

一般缺省s项直接:p=polyfit(x,y,n)


注:另外其中还用到函数y1=polyval(p,x),用法很好理解,看例子就能懂,具体自行百度或看matlab帮助。

 

下面直接上例子:

clear;clc;                             %不解释

a1=5:15;                               %自变量

a2=[89 78 71 59 44 32 22 10 -1 -5 -10];%因变量

xishu=polyfit(a1,a2,1)                 %拟合得到各项系数

k=xishu(1)                             %一次项系数即斜率

b=xishu(2)                             %零次项系数即截距

a_nihe=polyval(xishu,a1);              %得到自变量对应的拟合函数值

 

plot(a1,a2,'k*',a1,a_nihe,'r-')        %画图

legend('原始数据','拟合直线')           %图中注释

axis([0 15 -50 150])                   %限制方框大小

set(gca,'box','off')                   %不解释

set(gcf,'color',[1,1,1])               %白底

gridon                                %添加网格

拟合结果:斜率:-10.573;截距:141.09。

斜率和坐标轴焦点都是可以直接得到的,所以不需要“根据坐标轴交点求出斜率”。若需要横轴焦点请自行根据相关公式求解。

东莞大凡
2024-11-14 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于... 点击进入详情页
本回答由东莞大凡提供
百度网友19db8579b
推荐于2018-02-27 · TA获得超过749个赞
知道小有建树答主
回答量:507
采纳率:20%
帮助的人:280万
展开全部

clc

clear all

x=1:9;

y=10-x;

ep=[];

plot(x,y,'color','black')%画一个通过(1,9)(9,1)两个点的直线line1,黑色的线

hold on

for i=1:9

    ep(1,i)=rand(1,1)-0.5;

    ep(2,i)=rand(1,1)-0.5;

end

plot(x+ep(1,x),y+ep(2,x),'*')%沿line1取9个取样点,在x轴和y轴上分别偏差(-0.5,0.5)之间,蓝色的点

hold on

x1=x+ep(1,x);

y1=y+ep(2,x);

s=size(x);

s=s(2);

d=0;

m=0;

sx=x1(1);

sy=y1(1);

for i=1:s-1

    sx=x1(i+1)+sx;%将所有取样点的x加起来

    sy=y1(i+1)+sy;%将所有取样点的y加起来

    for h=i+1:s

        d=(y1(i)-y1(h))/(x1(i)-x1(h))+d;%将所有取样点之间的斜率加起来

        m=m+1;

    end

end

d=d/m;%求所有斜率的平均值

sx=sx/s;%求所有取样x的平均值

sy=sy/s;%求所有取样y的平均值

y2=d*x-d*sx+sy;%以取样x的平均值,取样y的平均值为通过点,取样斜率的平均值为斜率画一条逼近直线,红色的线

plot(x,y2,'color','red')

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式