mam różne działki (z hold on
) jak pokazano w poniższym rysunku: Jak 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.
mam różne działki (z hold on
) jak pokazano w poniższym rysunku: Jak 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.
znalazłem interactive fitting tool w Matlab proste i pomocny, choć nieco ograniczony:
Niestety, ten link jest martwy. –
Wydaje się, że ten plakat miał na myśli: http://www.mathworks.co.uk/help/matlab/data_analysis/interactive-fitting.html – Danny
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.
Chyba pyta, jak najpierw uzyskać dane z wykresu !!!! –
@richard: Mam dane, które wykreśliłem i pokazałem w pytaniu. Chcę poznać równanie tego spisku, którego nie znam. – Pupil
@ 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
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.
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.
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.
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.? –
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)? –
@ Oli: Nie znam podstawowej relacji. @ Jack_of_All_Trades: Generuję krzywą z danych osobiście. – Pupil