2016-11-13 276 views
0

我有一组点,我想要适合通过一条线。在大多数情况下,我最终会得到Inf或-Inf,特别是当这些线条是垂直或水平时。我已经看到了Matlab对居中和缩放的描述,但我似乎并不明白如何将其应用于我的数据。下面是一个示例代码,但请注意,它不完全是问题所在。我已经使用过这个功能,因为主代码太长而无法遵循。如何使用ployfit对数据进行居中和缩放

x = [0, 1.81, 3.64, 5.45, 7.27]; 
y = [1, -0.82, -2.64, -4.45, -6.27]; 

fitline = polyfit([y(1), y(2), y(3), y(4)], [x(1), x(2), x(3), x(4)], 1); 

%plot the data 
k = linspace(0, 10, 5); 
fk = (fitline(1)*k) + fitline(2); 

figure, plot(k, fk, 'Color', 'r', 'linewidth', 1); 

期待任何帮助/建议/意见。谢谢!

回答

0

MATLAB的函数集polyfitpolyval将为您处理居中(计算平均值)和缩放(计算标准偏差)。使用third output of polyfit得到的参数:

x = [0, 1.81, 3.64, 5.45, 7.27]; 
y = [1, -0.82, -2.64, -4.45, -6.27]; 
[fitline,~,mu] = polyfit(y(1:4),x(1:4), 1); 

并传递给polyval

k = linspace(0, 10, 5); 
fk = y = polyval(fitline,k,[],mu); 
+0

感谢@TroyHaskin。它完美的工作,但我想知道为什么它不起作用,当我在图像处理工具箱中的图像使用相同的方法。任何想法为什么会发生? – oma11