Как найти уравнение графика, соединяющего точки данных в Matlab?

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

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

5 ответов


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

enter image description here


график выше кажется линейной интерполяцией. Учитывая векторы 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,...)" методы.