Matlab polyfit для области данных - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть набор данных, для которого мне нужно сгенерировать две линейные линии наилучшего соответствия (1-й порядок polyfit), но я не знаю, как указать, к какой области каждая строка должна соответствовать данным.Мне нужна одна линия в области между минимальным значением x и 0, а другая в области 0,25

Кроме того, во второй области есть две чистые области данных, одна над другой,и мне нужно, чтобы линия наилучшего соответствия подходила только для нижнего.

Я полный новичок в Matlab, поэтому любая помощь будет принята с благодарностью

The graph I need the best fit lines on

%load data, force and velocity
load ('exp_6_Force');
load ('exp_6_Velocity');

% Give a name to the title bar.
set(gcf,'name','Experiment 6 velocity','numbertitle','off')

%set variables to x and y 
x = Force; 
y = Velocity;

%plot the graph
plot(x,y);

%add grid and legend
grid on;
legend ('Velocity');

%add labes and title
xlabel ('Force');
ylabel ('Velcoity');

% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);

%find coordinates of y min point
[value,index1] = min(y);
yminxcoor = x(index1);
yminycoor = y(index1);

1 Ответ

0 голосов
/ 27 ноября 2018

Используйте логический индекс , чтобы получить данные x и y для двух регионов:

Для региона 1:

x_region1 = (x<0).*x
y_region1 = (x<0).*y

Для региона2:

x_region2 = (x>0.25).*x
y_region2 = (x>0.25).*y

Тогда вы можете polyfit в этих регионах

Для региона 1:

p_region1 = polyfit(x_region1, y_region1, 1)

Для региона 2:

p_region2 = polyfit(x_region2, y_region2, 1)
...