关于用matlab拟和两组数据

来源:百度知道 编辑:UC知道 时间:2024/06/09 22:11:25
我有两组数据:
a =

80 85 90 95 100 105 110 115 120 125

>> b=[1.03 1.02 1.01 1 0.991 0.982 0.971 0.961 0.951 0.941]

b =

1.0300 1.0200 1.0100 1.0000 0.9910 0.9820 0.9710 0.9610 0.9510 0.9410

>> c=[135:5:180]

c =

135 140 145 150 155 160 165 170 175 180

>> d=[0.871 0.859 0.847 0.835 0.823 0.811 0.797 0.785 0.772 0.76]

d =

0.8710 0.8590 0.8470 0.8350 0.8230 0.8110 0.7970 0.7850 0.7720 0.7600

分别要把a,b和c,d拟和(a,c为两条线的x轴,b,d为其对应y轴),然后看他们在x=0处是否交于一点。
p.s:我自己画的都是线段,怎么才能拟合出直线??
而且,按照我的数据,没有包括x=0处的点,怎么才能显示出来y轴的相交情况呢?

明白你的意思啦。

clc;clear;
a=[80 85 90 95 100 105 110 115 120 125 ];
b=[1.03 1.02 1.01 1 0.991 0.982 0.971 0.961 0.951 0.941];
c=[135:5:180];
d=[0.871 0.859 0.847 0.835 0.823 0.811 0.797 0.785 0.772 0.76];
p1=polyfit(a,b,1)
p2=polyfit(c,d,1)
x=0:max(c);
y1=polyval(p1,x);
y2=polyval(p2,x);
plot(a,b,'o',c,d,'*',x,y1,x,y2)
grid
y1=poly2sym(p1)
y2=poly2sym(p2)
x0=solve(y1-y2)
x0=eval(x0)

结果:他们不在x=0相交,在x= 36.6706处相交。

p1 =

-0.0020 1.1876

p2 =

-0.0025 1.2062

y1 =

-4541811987845131/2305843009213693952*x+5348447622921999/4503599627370496

y2 =

-5712900740403371/2305843009213693952*x+33171/27500

x0 =

9226374436607001264/251601099182434375

x0 =

36.6706