Как найти уравнение графика, соединяющего точки данных в Matlab?
У меня есть различные сюжеты (с hold on
), как показано на следующем рисунке:
Я хотел бы знать, как найти уравнения этих шести кривых в Matlab. Спасибо.
5 ответов
нашел интерактивный инструмент установки в 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,...)" методы.