WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

??? KNIFFLIG: Schnittpunkt von Spline und Funktion ?

 

medivh1877
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2014, 12:52     Titel: ??? KNIFFLIG: Schnittpunkt von Spline und Funktion ?
  Antworten mit Zitat      
Moin liebe Gemeinde ,


Ich habe 100 Punkte. Durch die Punkte habe ich eine Kurve gelegt, mit Hilfe der Spline Funnktion.



Ich habe auch mehrere Geradenfunktion in der Form :

f = 2*x + 12;


Wie kriege ich jetzt den Schnittpunkt raus mit der Splinefunktion? Question Shocked
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 20.10.2014, 13:22     Titel:
  Antworten mit Zitat      
Hallo,

das ist zu vage formuliert, um eine sinnvolle Antwort geben zu können. Kannst du Code zeigen und die Koordinate der Punkte bereistellen (ansonsten gehen auch Zufallszahlen).
Schnittpunkte zwischen 2 Graphen kann man mit polxypoly() (braucht die Mapping Toolbox) finden. Alternativ kannst du auch versuchen, die Differenz der beiden Graphen zu bilden und dort nach Vorzeichenwechseln zu suchen.

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
medivh1877
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2014, 14:09     Titel:
  Antworten mit Zitat      
Nras hat Folgendes geschrieben:

Viele Grüße,
Nras.




Das hier ist meine Spline Funktion:

x_neu und y_neu sind vektoren mit je 100 Werten.


spline_oben = spline(x_neu,y_neu);



Und das sind meine Geradengleichung 1. Ordnung ( also in der Form f(x) = m*x + b).


p_gerade = polyfit(x_p,y_p,1)
m = p_gerade(1); % Steigung der Geraden
b = p_gerade(2); % y-Achsenabschnitt der Geraden


Das klappt alles. Aber ich hab keinen Ansatz wie ich jetzt den Schnittpunkt rauskriege.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 20.10.2014, 14:26     Titel:
  Antworten mit Zitat      
Hallo,

und was ist x_p bzw y_p? Ist das etwas anderes als x_neu bzw y_neu?
Private Nachricht senden Benutzer-Profile anzeigen
 
medivh1877
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2014, 14:32     Titel:
  Antworten mit Zitat      
Ja das sind andere Punkte. Das sind die x und y Werte von 2 Punkten, dazwischen wird eine Gerade gelegt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 20.10.2014, 14:45     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt, einfacher ist es, wenn du Daten bereitstellen würdest oder zumindest Zufallszahlen mit gleichen Eigenschaften erstellen kannst. Das macht das Helfen einfacher. Grundsätzlich kannst du Schnittpunkte zwischen zwei Graphen mit polyxpoly finden. Hier ein Beispiel:
Code:
% Irgendwelche Daten
x_neu = sort(rand(100,1)*20);
y_neu = 2*x_neu + 12 + rand(size(x_neu)).*x_neu;
figure
plot(x_neu, y_neu, 'k.')

% einen spline durchlegen
x_oben = linspace(min(x_neu), max(x_neu), 150);
spline_oben = spline(x_neu, y_neu, x_oben);
hold on
plot(x_oben, spline_oben);

% "irgendeine" Gerade durchlegen
p = polyfit([0, 20], [60, 0], 1);
plot(x_oben, polyval(p, x_oben), 'r-')

% Schnittpunkte von Spline mit Gerade mit polyxpoly finden
x_intersect = polyxpoly(x_oben, spline_oben, x_oben, polyval(p, x_oben));
plot(x_intersect, polyval(p, x_intersect), 'rx')
 


Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
medivh1877
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2014, 15:09     Titel:
  Antworten mit Zitat      
Mein Code ist etwas unübersichtlich deswegen hab ich nur die Hauptteile gepostet.

Vielen Dank, ich probier das gleich mal aus. Very Happy Very Happy Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 20.10.2014, 15:25     Titel:
  Antworten mit Zitat      
Aye,

es fehlt ja bloß die Angabe von x_neu, y_neu und x_p, y_p.
Private Nachricht senden Benutzer-Profile anzeigen
 
medivh1877
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 25.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2014, 17:24     Titel:
  Antworten mit Zitat      
Nras hat Folgendes geschrieben:
Aye,

es fehlt ja bloß die Angabe von x_neu, y_neu und x_p, y_p.


Hm mein Mtlab erkennt die Funktion polyxpoly nicht:

Undefined function 'polyxpoly' for input arguments of type 'struct'.

Ich hab Matlab R2013b,
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 20.10.2014, 20:56     Titel:
  Antworten mit Zitat      
Hallo,

wie eingangs erwähnt kommt polyxpoly aus der Mapping Toolbox. Da hast du ja bisher nichts zu gesagt. Ob du die Toolbox verfügbar hast, kannst du durch eingabe von 'ver' sehen.

Da bleibt dir nun noch die Option, beide Kurven auf gemeinsame x-Werte zu interpolieren (tipp: die Gerade auf die Stützstellen des Splines interpolieren) und die Differenzen der zugehörigen y-Werte zu bilden. Vorzeichenwechsel der Differenz deuten auf einen Schnittpunkt zwischen den beidne Stützstellen, zwischen denen der Vorzeichenwechsel passiert.

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.