我有两个数组451x1,我想为我的数据的一部分拟合一条线,对于x = 3.8 -4.1,我想用y = 0来评估对拟合线的截取,你有什么想法吗? (在matlab中)
答案 0 :(得分:3)
您可以通过indexing您想要使用的曲线点轻松执行线性回归,并将它们传递给函数POLYFIT。这是执行此操作的代码和拟合线的图:
index = (x >= 3.8) & (x <= 4.1); %# Get the index of the line segment
p = polyfit(x(index),y(index),1); %# Fit polynomial coefficients for line
yfit = p(2)+x.*p(1); %# Compute the best-fit line
plot(x,y); %# Plot the data
hold on; %# Add to the plot
plot(x,yfit,'r'); %# Plot the best-fit line
axis([1 7 0 4e10]); %# Adjust the axes limits
然后你可以计算这条线截取x轴的位置(即y = 0
),如下所示:
>> -p(2)/p(1)
ans =
3.5264
答案 1 :(得分:1)
我只是猜测你的问题是估计一条零y截距的线,虽然老实说,“想要用y = 0来评估对拟合线的截取”对我来说对英语没什么意义。所以这只是一个完整的猜测,除非你选择澄清你的问题。
删除不在感兴趣区间内的那部分数据。 (或者,如果您愿意,只提取那部分。)
在感兴趣的数据中插入零y截距线。
斜率= x(:)\ y(:);
答案 2 :(得分:1)
你会x
尊重y
,如:
> ndx= find(x>= 3.8& x<= 4.1);
> b= [y(ndx) ones(size(ndx))]\ x(ndx)
现在b(2)
是“拦截”行y= 0
。