Как найти уравнение графика, соединяющего точки данных в Matlab? - PullRequest
8 голосов
/ 30 марта 2012

У меня есть различные графики (с hold on), как показано на следующем рисунке: enter image description here

Я хотел бы знать, как найти уравнения этих шести кривых в Matlab.Спасибо.

Ответы [ 5 ]

2 голосов
/ 01 апреля 2012

Я нашел интерактивный инструмент для подгонки в Matlab простой и полезный, хотя и несколько ограниченный по объему:

enter image description here

0 голосов
/ 31 марта 2012

Существует способ извлечь информацию с помощью текущего дескриптора фигуры (gcf) из вашего графика.

Например, вы можете получить серии, которые были нанесены на график:

% Some figure is created and data are plotted on it
figure;
hold on;
A = [ 1 2 3 4 5 7] % Dummy data
B = A.*A % Some other dummy data
plot(A,B);
plot(A.*3,B-1);

% Those three lines of code will get you series that were plotted on your graph
lh=findall(gcf,'type','line'); % Extract the plotted line from the figure handle
xp=get(lh,'xdata'); % Extract the Xs
yp=get(lh,'ydata'); % Extract the Ys

Должна быть другая информация, которую вы можете получить из методов "findall (gcf, ...)".

0 голосов
/ 30 марта 2012

Совет, хотя и может быть лучший ответ, от меня таков: постарайтесь увидеть скорость увеличения кривой.Например, кубическое представление более репрезентативно, чем квадратичное, если скорость увеличения кажется быстрой, найти полином и вычислить ошибку отклонения.Для нерегулярных кривых вы можете попробовать сплайн-фитинг.Я полагаю, в matlab есть также набор инструментов для подгонки сплайнов.

0 голосов
/ 30 марта 2012

rxns означает реакции?В этом случае ваши кривые скорее всего экспоненциальные.Экспоненциальная функция имеет вид: y = a*exp(b * x).В вашем случае y - это ширина зоны смешивания, а x - это время в годах.Теперь все, что вам нужно сделать, это запустить экспоненциальную регрессию в Matlab , чтобы найти оптимальные значения параметров a и b, и вы получите ваши уравнения.

0 голосов
/ 30 марта 2012

График выше представляет собой линейную интерполяцию.Для заданных векторов X и Y данных, где X содержит аргументы, а Y - точки функций, вы можете сделать

f = interp1(X, Y, x)

, чтобы получить линейно интерполированное значение f (x).Например, если данные

X = [0 1 2 3  4  5];
Y = [0 1 4 9 16 25];

, то

y = interp1(X, Y, 1.5)

должно дать вам очень грубое приближение к 1.5^2.interp1 будет точно соответствовать графику, но вас могут заинтересовать более сложные операции подбора кривой, такие как сплайн-аппроксимации и т. Д.

...