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

Nullstelle

 

floh91
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2009, 10:38     Titel: Nullstelle
  Antworten mit Zitat      
Hallo,

ich suche eine Möglichkeit in einem Geschwindigkeitsfeld bei einem konstanten Wert y aus einer Anzahl Messwerte den x-Wert bei der Geschwindigkeit v = 0 herauszufiltern.

Das Problem ist, dass es keinen Wert v = 0 gibt, d.h. ich muss interpolieren und da hängt es derzeit bei mir.

Mit dieser Anweisung ist es einfach zu ungenau, da nur der angenäherte Wert ausgegeben wird.

Code:
   [O,I]= min(999*((X<2) + (X>3)) + cumsum(C));
    XS(i)= X(I);  


Es wäre schön, wenn mir jemand helfen könnte.

Die Werte sind z.B.

x v

0.125714 -0.267443
0.188571 -0.186930
0.251429 -0.202234
0.314286 -0.311536
0.377143 -0.315936
0.440000 -0.288552
0.502857 -0.252130
0.565714 -0.241068
0.628571 -0.290067
0.754286 -0.157145
0.817143 -0.090463
1.005710 0.164412
1.068570 0.369409
1.131430 0.387661
1.194290 0.443704
1.257140 0.545318
1.320000 0.555976
1.382860 0.657967
1.445710 0.672824
1.508570 0.682211
1.571430 0.665079
1.634290 0.680966
1.760000 0.612702
1.948570 0.527510
2.011430 0.513442
2.074290 0.507189
2.137140 0.520005
2.200000 0.531300
2.325710 0.520278
2.388570 0.582909
2.451430 0.578028
2.514290 0.492754
2.577140 0.489725
2.640000 0.452172
2.702860 0.412733
2.765710 0.377530
2.891430 0.298271
2.954290 0.265191
3.017140 0.238769
3.080000 0.210172
3.142860 0.188084
3.205710 0.169511
3.331430 0.140465
3.394290 0.130296
3.457140 0.123548
3.520000 0.116469
3.582860 0.110610
3.645710 0.104561
3.708570 0.097430
3.771430 0.088963
3.834290 0.079146
3.897140 0.068625
3.960000 0.058369
4.022860 0.049240
4.085710 0.041771
4.148570 0.036064
4.211430 0.031884

Der dazugehörige Graph siehe Anhang.

viele Grüße

Flo

ls_02088.jpeg
 Beschreibung:

Download
 Dateiname:  ls_02088.jpeg
 Dateigröße:  73.57 KB
 Heruntergeladen:  437 mal
Private Nachricht senden Benutzer-Profile anzeigen


Matlab.lab
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 07.09.09
Wohnort: Ulm HMS
Version: 2007 a
     Beitrag Verfasst am: 25.11.2009, 10:46     Titel:
  Antworten mit Zitat      
was spricht dagegen, dass du dir die zero crossing suchst? also wenn der eine wert -0.001 und der nächste 0.001 ist..
und das kombinieren mit einem threshold-band, z.b. dass im bereich von 0.002 um 0 alles 0 wird..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.11.2009, 11:17     Titel:
  Antworten mit Zitat      
Hallo,

man kann Interpolation und Nullstellensuche kombinieren:

Code:
loesung = fzero(@(xi) interp1(x, y, xi), x0)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2009, 14:21     Titel:
  Antworten mit Zitat      
Herzlichen Dank, es funktioniert bestens oder noch nicht bestens, weil ...

Du sagst, fzero gibt immer nur eine Nullstelle zurück und das x0 definiert werden muss (vermutlich bis zu welchem Bereich).

Nun haben meine Graphen streckenweise 2 oder 3 Nullstellen und ich benötige eine ganz bestimmte, z.B. im Bereich von 2 < x0 < 3.

wie definiere ich x0 hier so, dass fzero mir exakt diese eine Nullstelle in diesem Bereich ausgibt?

Schon einmal Danke für die Antwort

flo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.11.2009, 15:47     Titel:
  Antworten mit Zitat      
Hallo,

mit
Code:
loesung = fzero(@(xi) interp1(x, y, xi), 2.5)

solltest du auf der sicheren Seite sein.

Wenn du die Nullstelle(n)-Suche nur auf einen bestimmten Bereich beschränken willst, kannst du natürlich auch das Signal einschränken:

Code:
loesung = fzero(@(xi) interp1(x(x>2 & x<3), y(x>2 & x<3),  xi), 2.5)


Je nach Länge der Vektoren kann das sogar auch schneller sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
floh91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2009, 16:48     Titel:
  Antworten mit Zitat      
Prima, danke schön.

Klappt bestens Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Boyya
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2010, 20:55     Titel:
  Antworten mit Zitat      
Ich habe genau das selbe Problem...

könnt ihr den code noch genauer schreiben?
Ich verstehe es nicht ...
Ich habe quasi nur Messdaten , wie x, und v. Die funktion zwischen den Beiden Spalten ist nicht bekannt!

Wie kriege ich die Nullstellen?
Danke
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 - 2025 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.