Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Daten aus contour plot ineraktiv benutzen

 

SparX
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2018, 08:54     Titel: Daten aus contour plot ineraktiv benutzen
  Antworten mit Zitat      
Hallo Matlab-Forum,

ich habe einen contour plot aus Motordaten erstellt, den ich in einem weiteren Vorgehen nutzen möchte.

Dieser plot hat als Eingangsgrößen die Drehzahl auf der X-Achse und einen Mitteldruck auf der Y-Achse. Die dargestellten Isolinien zeigen den aktuellen spezifischen Verbrauch.

Für die Berechnung des spezifischen Verbrauchs in einem Fahrzyklus berechne ich die Variablen "Drehzahl" und "Mitteldruck", um jetzt aus dem contour plot den zugehörigen spezifischen Verbrauch zu erhalten.

Mein Frage dazu ist:

Wie kann ich diese Kombination aus vorgegebenen Motordaten und aus einem Fahrzyklus errechneten Daten programmieren?

Gruß,
SparX
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 19.275
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 06.08.2018, 09:17     Titel:
  Antworten mit Zitat      
Hallo,

für mich klingt es sinnvoller, die Daten über Interpolation zu ermitteln, z.B. mit griddata .

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
SparX
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2018, 09:46     Titel:
  Antworten mit Zitat      
Hallo Harald,

in diesem Fall sind die Daten aus dem contour plot schon interpolierte Daten.

Das, was ich quasi mit meiner Rechnung erreichen möchte ist:

Berechne ein neues "n" und ein neues "p" und zeige mir dafür die Z-Komponente aus dem contour plot.

Gruß,
SparX
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 19.275
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 06.08.2018, 09:54     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Berechne ein neues "n" und ein neues "p" und zeige mir dafür die Z-Komponente aus dem contour plot.

... und genau dazu würde ich Interpolation verwenden.
Für ein Auslesen aus einem Plot sehe ich keine Möglichkeit.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
SparX
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2018, 10:29     Titel:
  Antworten mit Zitat      
Ah, okay. Das werde ich einmal versuchen. Danke.

Gruß,
Sparx
Private Nachricht senden Benutzer-Profile anzeigen
 
SparX
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2018, 07:27     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
Berechne ein neues "n" und ein neues "p" und zeige mir dafür die Z-Komponente aus dem contour plot.

... und genau dazu würde ich Interpolation verwenden.
Für ein Auslesen aus einem Plot sehe ich keine Möglichkeit.

Grüße,
Harald


Hallo,

ich habe mal eine weitere Interpolation probiert. Das Problem dabei ist, dass die Länge der "n"- und "p"-Vektoren nicht mir der "z"-matrix aus dem vorherigen contour plot übereinstimmt. Daher bekomme ich bei der Interpolation eine Fehlermeldung. Ich muss also nochmal schauen, dass ich die Dimensionen der "n"- und "p"-Vektoren irgendwie anpassen kann. Diese sind allerdings vorgegeben durch eine vorherige Berechnung, daher denke ich nicht, dass sich die Längen ändern lassen ohne die Vektoren künstlich aufzublasen.

Gruß,
SparX
Private Nachricht senden Benutzer-Profile anzeigen
 
J0nas
Forum-Century

Forum-Century


Beiträge: 206
Anmeldedatum: 10.09.15
Wohnort: ---
Version: ab 2016a
     Beitrag Verfasst am: 07.08.2018, 08:15     Titel:
  Antworten mit Zitat      
Hi SparX,

da hilft dir doch auch eine Interpolation weiter?! Du nimmst einen neuen "n"- und/oder "p"-Wert und suchst bei deinen vorhandenen Werten einen "n" Wert der größer und einen kleineren Wert und interpolierst dann. Anschließend das ganze mit dem nächsten Wert, usw. Da ist doch egal ob die Vektoren unterschiedlich lang sind, oder nicht?

Grüße
Jonas
_________________

1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 19.275
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 07.08.2018, 08:35     Titel:
  Antworten mit Zitat      
Hallo,

das ist momentan etwas Kaffeesatz-Lesen. In welcher Form (Dimensionen) sind denn deine ursprünglichen Daten gegeben?

Im übrigen würde ich keine weitere Interpolation machen, sondern eine Interpolation mit den Rohdaten.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
SparX
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2018, 08:56     Titel:
  Antworten mit Zitat      
Hallo,

meine errechneten Vektoren haben die Dimensionen:

n: 169x1
p: 155x1

Die Matrix, mit der interpoliert werden soll hat die Dimension:

z: 2501x3201

Und die Vektoren für die Interpolation haben die Dimension:

xi: 1x3201
yi: 1x2501

Ich würde meine errechneten Werte gerne mit den schon interpolierteN Werten vergleichen, da diese als "allgemein gültige" Daten angesehen werden können, die die Basis meiner Auswertung darstellen.

Gruß,
SparX
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 19.275
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 07.08.2018, 09:12     Titel:
  Antworten mit Zitat      
Hallo,

wenn du das tatsächlich so willst, müsstest du die Vektoren xi und yi mit repmat aufblasen.
Ich halte es aber für wenig sinnvoll, mit bereits interpolierten Daten nochmal zu interpolieren. Bei den Rohdaten wirst du bessere Performance bekommen und vermutlich auch bessere Ergebnisse.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
SparX
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2018, 09:46     Titel:
  Antworten mit Zitat      
Hallo,

mir ist eben noch eine andere Idee gekommen. Man könnte ja auch "einfach" mit den Wertepaaren aus den Vektoren "n" und "p" (bspw. (n(10)/p(10) oder n(100)/p(100)) in der interpolierten Matrix aus dem contour plot suchen. Sprich mit Matrix A = (x/y/z) erstellt man den Vektor b = A(x=n(100)/y=p(100)/z), da ja für die Werte x und y ein z-Wert zugeordnet ist.

Das versuche ich über

Code:
for zaehler=1:length(n)
    t(zaehler) = find(x==(n(zaehler)));
end

for zaehler=1:length(t)
    b(zaehler)=A (t(zaehler),600);
end

for zaehler=1:length(p)
     u(zaehler) = find((y==p(zaehler)));
 end


Das klappt gut bei der Berechnung für "t" und "b", aber nicht für "u".

Für die Berechnung von "u" wird dieser Fehler ausgegeben:

Code:
Unable to perform assignment because the left and right sides have a different number of elements.

Error in Test (line 171)
    u(zaehler) = find((yii==p(zaehler)));


Während t für die Länge n ohne Probleme durchläuft, bricht die Berechnung von u schon beim 15. Wert von p ab, obwohl der p-Vektor 1184 Einträge besitzt.

Den Fehler verstehe ich allerdings nicht, da er eigentlich auch auf die Berechnung von t(zaehler) zutreffen müsste.

Gruß,
SparX
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 19.275
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 09.08.2018, 10:37     Titel:
  Antworten mit Zitat      
Hallo,

der Fehler kann dann auftreten, wenn y mehrere Elemente enthält, die p(zaehler) gleichen, oder auch gar keine. Gib nach der Fehlermeldung mal
Code:
find((y==p(zaehler)))

ein, dann siehst du's ja.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
SparX
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2018, 11:56     Titel:
  Antworten mit Zitat      
Hallo,

für
Code:
find((y==p(zaehler)))
wird ein 0-Vektor ausgegeben, obwohl das nicht sein kann.

Für "n" hat es ohne Probleme funktioniert. Da war es auch kein Problem, dass mehrere Werte des "n"-Vektors den gleichen Wert wie der "x"-Vektor hatten.

Bspw. für

Code:
n = [800 1200 2800 800] und x=[800 1000 1200 1400 1600 ...]

berechnete sich der "t"-Vektor zu
Code:
t = [1 3 11 1]


Und am Anfang macht das Programm auch das, was es soll. Aber es bricht nach dem 15. Wert ab.

Daher wird erst

u=[1 1 1 1 1 1 1 1 1 1 1 1 75 251 361]

berechnet und dann kommt die Fehlermeldung.

Gruß,
SparX
Private Nachricht senden Benutzer-Profile anzeigen
 
J0nas
Forum-Century

Forum-Century


Beiträge: 206
Anmeldedatum: 10.09.15
Wohnort: ---
Version: ab 2016a
     Beitrag Verfasst am: 09.08.2018, 12:07     Titel:
  Antworten mit Zitat      
Hallo SparX,

die Schleife bei u wurde ja auch nur 15 mal durchlaufen, da dann der Fehler auftritt. Von daher passt die Größe. Welchen Wert hat denn p(16) und ist dieser sicher in y vorhanden? Wenn er keinen passenden Wert findet wird ein leerer Vektor zurück gegeben.

Zitat:
wird ein 0-Vektor ausgegeben

0-Vektor oder ein leerer Vektor? (siehe oben)

Grüße
Jonas
_________________

1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
Private Nachricht senden Benutzer-Profile anzeigen
 
SparX
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2018, 12:11     Titel:
  Antworten mit Zitat      
J0nas hat Folgendes geschrieben:
Hallo SparX,

die Schleife bei u wurde ja auch nur 15 mal durchlaufen, da dann der Fehler auftritt. Von daher passt die Größe. Welchen Wert hat denn p(16) und ist dieser sicher in y vorhanden? Wenn er keinen passenden Wert findet wird ein leerer Vektor zurück gegeben.

Zitat:
wird ein 0-Vektor ausgegeben

0-Vektor oder ein leerer Vektor? (siehe oben)

Grüße
Jonas


p(16) hat den Wert hat den Wert 0.47 und y ist ein Vektor (0:0.01:25), von daher ist der p-Wert in y auf jeden Fall enthalten. Es wäre eigentlich der y( 48 )-Wert.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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
.



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.