У меня есть различные графики (с hold on
), как показано на следующем рисунке:
Я хотел бы знать, как найти уравнения этих шести кривых в Matlab. Спасибо.
У меня есть различные графики (с hold on
), как показано на следующем рисунке:
Я хотел бы знать, как найти уравнения этих шести кривых в Matlab. Спасибо.
Я нашел интерактивный инструмент подбора в Matlab простым и полезным, хотя несколько ограничен по объему:
График выше выглядит как линейная интерполяция. Учитывая векторы данных 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
будет точно соответствовать графику, но вас могут заинтересовать более сложные операции подбора кривой, такие как аппроксимация сплайнов и т. д.
rxns означает реакции? В этом случае ваши кривые, скорее всего, будут экспоненциальными. Экспоненциальная функция имеет вид: y = a*exp(b * x)
. В вашем случае y
— это ширина зоны смешения, а x
— это время в годах. Теперь все, что вам нужно сделать, это запустить экспоненциальную регрессию в Matlab, чтобы найти оптимальную значения параметров a
и b
, и вы получите уравнения.
Совет от меня, хотя может быть и лучший ответ, таков: постарайтесь увидеть скорость увеличения кривой. Например, кубическое число является более репрезентативным, чем квадратичное, если скорость увеличения кажется быстрой, найдите полином и вычислите ошибку отклонения. Для неправильных кривых вы можете попробовать подгонку сплайном. Я предполагаю, что в Matlab также есть набор инструментов для подгонки сплайнов.
Существует способ извлечь информацию с текущим дескриптором фигуры (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,...)".