2016-11-13 4 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 polyfit и polyval будут обрабатывать центрирование (вычисление среднего значения) и масштабирование (расчет стандартного отклонения) для вас. Используйте 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