2012-03-30 8 views
8

mam różne działki (z hold on) jak pokazano w poniższym rysunku: enter image description hereJak mogę znaleźć równanie wykresu łączącego punkty danych w programie Matlab?

Chciałbym wiedzieć, jak znaleźć tych sześciu równań krzywych w Matlab. Dzięki.

+0

Istnieje wiele równań, które pasują te krzywe. Czy wiesz coś o podstawowej relacji? na przykład czy może to być wykładnicza, kwadratowa itp.? –

+0

Nie jest dla mnie jasne ... Czy generujesz krzywiznę z samych danych lub po prostu zapisujesz wykres jako .fig (jak sądzę, jest to format MATLAB)? –

+0

@ Oli: Nie znam podstawowej relacji. @ Jack_of_All_Trades: Generuję krzywą z danych osobiście. – Pupil

Odpowiedz

2

znalazłem interactive fitting tool w Matlab proste i pomocny, choć nieco ograniczony:

enter image description here

+0

Niestety, ten link jest martwy. –

+0

Wydaje się, że ten plakat miał na myśli: http://www.mathworks.co.uk/help/matlab/data_analysis/interactive-fitting.html – Danny

0

Powyższy wykres wydaje się być interpolacją liniową. Podane wektory X i Y z danymi, gdzie X zawiera argumenty i Y punktów funkcyjnych, można zrobić

f = interp1(X, Y, x) 

uzyskać interpolowane liniowo wartość f (x). Na przykład, jeśli dane są

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

następnie

y = interp1(X, Y, 1.5) 

powinien dać bardzo szorstkie przybliżenie do 1.5^2. interp1 będzie dokładnie pasować do wykresu, ale możesz zainteresować się bardziej wyszukanymi operacjami dopasowywania krzywych, takimi jak przybliżenia splajnu itp.

+0

Chyba pyta, jak najpierw uzyskać dane z wykresu !!!! –

+0

@richard: Mam dane, które wykreśliłem i pokazałem w pytaniu. Chcę poznać równanie tego spisku, którego nie znam. – Pupil

+0

@ S_H po prostu być jasne, masz rzeczywiście dane liczbowe, które wygenerowały ten wykres? Równanie fabuły, jak powiedziałem, jest liniowe (http://en.wikipedia.org/wiki/Linear_interpolation); innymi słowy "połącz kropki". Jest to jednak jeden z wielu możliwych sposobów przekształcenia dyskretnych danych w "krzywą". Musisz być bardziej szczegółowy o tym, czego szukasz. – richard

0

Wskazówka, choć może być lepsza odpowiedź, ode mnie: spróbuj zobaczyć tempo wzrostu w krzywa. Na przykład sześcienny jest bardziej reprezentatywny niż kwadratowy, jeśli tempo wzrostu wydaje się szybkie i znaleźć wielomian i obliczyć błąd odchylenia. W przypadku nieregularnych krzywych możesz wypróbować dopasowanie splajnu. Sądzę, że w Matlabie jest również zestaw narzędzi do dopasowania splajnu.

0

Czy rxns oznaczają reakcje? W takim przypadku Twoje krzywe są najprawdopodobniej wykładnicze. Funkcja wykładnicza ma postać: y = a*exp(b * x). W twoim przypadku y to szerokość strefy mieszania, a x to czas od lat. Teraz wszystko, co musisz zrobić, to uruchomić exponential regression in Matlab, aby znaleźć optymalne wartości parametrów a i b, a będziesz miał swoje równania.

0

Istnieje sposób na wyodrębnienie informacji za pomocą aktualnego rysunku (gcf) z wykresu.

Na przykład, można uzyskać szereg że wykreślono na wykresie:

% 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 

muszą istnieć inne informacje, które można uzyskać z „findAll (GCF, ...)” metod.

Powiązane problemy