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

Bestimmten Punkt aus Plot auslesen

 

KaiS
Forum-Century

Forum-Century


Beiträge: 102
Anmeldedatum: 19.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2011, 15:42     Titel: Bestimmten Punkt aus Plot auslesen
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Plot vorliegen.

Code:

A = [0.782861935   0.784111062   0.739348055   0.700822874   0.665300205   0.631542841   0.598944546   0.567162952   0.535985807   0.505272497   0.474925124   0.181458496   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16}

B = [0   0.01 0.02   0.03   0.04   0.05   0.06   0.07   0.08   0.09   0.1   0.2   0.3   0.4   0.5   0.6   0.7   0.8   0.9   1   1.1   1.2   1.3   1.4   1.5];

 


Nun plotte ich in Matlab A über B.

Mein Problem ist folgendes:
Wie kann ich z.B. den Punkt von B finden, bei dem A = 0.25 ist?

Würde mich über Antworten freuen!

Danke!

LG
Kai
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

das sinnvollste ist irgendeine Form der Interpolation, z.B.
Code:
interp1(A(1:13),B(1:13),0.25,'linear')
interp1(A(1:13),B(1:13),0.25,'spline')


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

Forum-Century

Forum-Century


Beiträge: 102
Anmeldedatum: 19.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2011, 08:37     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für den Tipp!

Was ich noch nicht verstehe ist der Abschnitt mit (1:13). Hast du absichtlich 13 hier als obere Grenze gewählt? Wenn ja, warum? Die beiden Matrizen haben ja eigentlich eine Länge von 25..

Und nochwas:
Eig sollen A und B nicht nur ein einzeiler Vektor, sondern eine mehrzeilige Matrix sein.
Wie adressiere ich nun speziell z.B. Zeile 1?

Code:
y1 = interp1(A(1,1:25),B(1,1:25),0.25,'linear');

funktioniert iwie nicht..


Danke!

LG
Kai
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 28.06.2011, 09:21     Titel:
  Antworten mit Zitat      
Hast du auch eine Fehlermeldung hierzu?
Mit A(1,1:25) spricht man die ersten 25. Spalten der ersten Zeile an.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.06.2011, 09:36     Titel:
  Antworten mit Zitat      
Hallo,

du siehst ja die Fehlermeldung, die kommt, wenn du das 1:13 z.B. weglässt - nämlich dass interp1 es nicht mag, wenn du zu einem x-Wert mehrere y-Werte hast. Deswegen habe ich den Rest einfach mal abgeschnitten. Das kann man natürlich auch automatisieren - z.B. mit logischer Indizierung und DIFF.

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

Forum-Century

Forum-Century


Beiträge: 102
Anmeldedatum: 19.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2011, 09:44     Titel:
  Antworten mit Zitat      
eupho hat Folgendes geschrieben:
Hast du auch eine Fehlermeldung hierzu?
Mit A(1,1:25) spricht man die ersten 25. Spalten der ersten Zeile an.


Genau, das war auch der Plan Smile

Die Fehlermeldung lautet
Zitat:
??? Error using ==> interp1 at 261
The values of X should be distinct.


@Harald:
Ah okay, aber ob ich da 1:13 oder 1:25 nehme, ist ja dann egal.. Solange die Längen von X und Y zueinander passen. Oder meinst du was anderes?[/quote]
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 28.06.2011, 10:23     Titel:
  Antworten mit Zitat      
Die Fehlermeldung ist doch durchaus aussagekräftig, das ist doch praktisch?
--> Deine x-Werte dürfen sich nicht überschneiden!
Private Nachricht senden Benutzer-Profile anzeigen
 
KaiS
Themenstarter

Forum-Century

Forum-Century


Beiträge: 102
Anmeldedatum: 19.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2011, 10:54     Titel:
  Antworten mit Zitat      
Ah okay, jetzt durchblicke ich die ganze Sache erst..

@Harald:

Bitte meinen letzten Post ignorieren, ich versteh erst jetzt was du mir eig sagen wolltest.. Very Happy

Danke für eure Hilfe Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
KaiS
Themenstarter

Forum-Century

Forum-Century


Beiträge: 102
Anmeldedatum: 19.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2011, 11:19     Titel:
  Antworten mit Zitat      
Hi,

ich habe nun doch noch ein anderes Problem.

Um diese 13 bzw. 25-Thematik zu umgehen, hab ich eine Schleife geschrieben:

Code:

for n = 1:11 %Spaltenanzahl
    i = 25; %Länge von A und B
    while A(n,i) == A(n,i-1)
        i = i-1;
    end
    y(n) = interp1(A(n,1:i),B(n,1:i),0.25,'linear');
end
 


Außerdem habe ich mal A erweitert.

Code:

A = [0.782861935   0.784111062   0.739348055   0.700822874   0.665300205   0.631542841   0.598944546   0.567162952   0.535985807   0.505272497   0.474925124   0.181458496   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16
0.797928576   0.815074997   0.784410968   0.760231293   0.73917286   0.719949589   0.701931303   0.684762111   0.668221381   0.652162949   0.636485052   0.490117318   0.350980288   0.216393031   0.084212959   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16
0.808121714   0.830723939   0.803716837   0.783440606   0.766404333   0.75127307   0.737392693   0.724393793   0.712047354   0.700201661   0.688751086   0.585059757   0.488890554   0.397466278   0.308571507   0.220746925   0.133533479   0.046600171   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16   2.22E-16];
 


Dabei tritt nun bei n=2, also der zweiten Zeile folgender Fehler auf:
Zitat:
??? Index exceeds matrix dimensions.


Bei n =1 läufts also problemlos. Kann mir vllt jmd weiterhelfen hier?

Danke!

P.S.: Sry für Doppelpost..
Private Nachricht senden Benutzer-Profile anzeigen
 
KaiS
Themenstarter

Forum-Century

Forum-Century


Beiträge: 102
Anmeldedatum: 19.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2011, 13:32     Titel:
  Antworten mit Zitat      
Jetzt wollte ich den vorigen Beitrag editieren, um ein Dreifachpost zu vermeiden, aber das is ja leider nicht möglich.

Deswegen hier:
Problem hat sich gelöst! Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2011, 14:24     Titel:
  Antworten mit Zitat      
Hallo,

bevor ich einen neuen Thread aufmache, dachte ich, dass ich das hier reinschreiben kann.

Was mache ich denn, wenn ich einen vorgegebenen x-Wert habe und den dazu passenden y-Wert haben will? D.h. das umgekehrte Problem wie KaiS.

Danke!

LG
Olli
 
Harald
Forum-Meister

Forum-Meister


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

wenn es umgekehrt ist, dann brauchst du nur x und y vertauschen.
Das dritte Argument von interp1 sollte jedenfalls ein Gitter von Werten sein, die zwischen den Werten im ersten Argument liegen.

Grüße,
Harald
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.