Contour Befehl < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
kann mir bitte jemand weiterhelfen:
Ich habe 3 Vektoren (1x9000). Diese würde ich gerne mit dem Contour-Befehl in einem Plot darstellen.
Vektor 1 = x-Achse (Zeit)
Vektor 2 = y-Achse Größe B
Im diagramm dann den dazugehörigen Vektor 3.
Wie geht das?
|
|
|
|
Hi,
gib doch mal Beispieldaten.
Willst Du eine Funktion darstellen?
contour plottet Höhenlinien einer Matrix.
Viele Grüße
nschlange
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 02:30 Mi 26.12.2007 | Autor: | martin111 |
Bin mir auch nicht sicher ob es überhaupt möglich ist was ich tun will und keinen Denkfehler habe
Ich habe 3 beliebige Messgrößen in Excel gegeben. diese lese ich in Matlab ein.
Beispiel Temperatursensor:
liefert 3 Vektoren. Zeit - Temperatur - Widerstand (Ohm) ). Vektoren habe alle eine gemeinsame Länge.
Nun kann ich dies doch im Contour-Plot darstellen?
xAchse: Zeit
yAchse: Temperatur
zWerte dann den Widerstand.
Aber wie, ich habe ja keine Matrix, sondern nur z.B. 3mal 9000x1 Vektoren......
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:25 Mi 26.12.2007 | Autor: | nschlange |
Hi,
ich hab das noch nicht verstanden.
Hast Du so ein Diagramm in Excel schon gemacht?
Dann könntest Du das mal hier hochladen.
Wenn Du für x und y jeweils 9000 Stellen hast,
dann brauchst Du doch 9000 x 9000 Punkte zum
Auftragen, oder?
Viele Grüße
nschlange
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:45 Mi 26.12.2007 | Autor: | martin111 |
Das verstehe ich ja auch nicht. In Excel habe ich nichts.
Ich habe 3Messgrößen, alle 9000x1.
Also jeweils 9000 Messpunkte/Abtastpunkte.
1. Abtastpunkt: Zeit=1s; Temperatur=5°C, Widerstand=10Ohm
2. Abtastpunkt: Zeit=2s; Temperatur=6°C, Widerstand=10,5Ohm
usw.
bis eben die Messung vorbei ist bei 9000Messpunkten (9000s)
Und jetzt dies mit dem Contour Befehl darstellen, eine Matrix habe ich nicht?
Wie so ein Verbrauchs-Muscheldiagramm das es in der AutoMotorSport immer gibt. Über Drehzahl und Drehmoment den effektiven Verbrauch aufzeigen. Die haben eigentl. auch nur Messgrößen......
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:59 Mi 26.12.2007 | Autor: | nschlange |
Du meinst so ein Bild:
http://www.spritmonitor.de/de/benzin_sparen_rico_klein.html
?
Das kannst Du mit Deinen Daten nicht machen.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:12 Mi 26.12.2007 | Autor: | martin111 |
Genau so eins.
Es gibt aber ein Programm (UniPlot), das macht genau mit diesen Daten solch ein Diagramm. Bedingung war hier das die Vektoren immer gleich lang sein mussten, Uniplot kann nicht interpolieren.
Darum will ich nun alles in Matlab umsetzen.
Also es muss auch nur mit diesen Daten gehen, warum nicht? Die 3 Messgrößen sind alle gleich lang und abhängig voneinander. Man kann alle Messpunkte zuordnen.
Warum nicht mit Contour, was fehlt?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:01 Mi 26.12.2007 | Autor: | nschlange |
Du hast in der xy-Ebene 9000x9000 'Felder', denen Du eine Höhe
zuordnen willst, Du hast aber nur 9000 Messwerte, bräuchtest aber
81000000.
Damit kannst Du kein Höhenprofil bekommen,
nur eine Linie/Kurve, die etwa diagonal über der xy-Ebene liegt.
Du hast ja einen Messwert für t=1s und T=5°C,
aber wohl nicht für t=1s und T=6°C, verstehst Du was ich meine?
Stell doch mal die Daten zur Verfügung, falls das möglich ist.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:05 Mi 26.12.2007 | Autor: | martin111 |
Messgrößen habe ich leider nicht zur Hand, ist aber auch egal.
Temperatursensor war nur ein Beispiel. Bei meinen Messgrößen kann es durchaus vorkommen, dass zu einem identischen x/y-Wert unterschiedl. z-Werte herauskommen.
Wie eben das Beispiel zu dem Link den du mir geschickt hast. Hier gibts doch auch abhängig von Arbeit/Drehzahl unterschiedl. z-Werte.
Diese werden auch auf einem Prüfstand herausgefahren und man erhält doch drei Messgrößen.....
Du hast mich doch verstanden was ich machen will, oder?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:25 Mi 26.12.2007 | Autor: | nschlange |
Ja, ich versteh das glaub ich schon,
verstehst Du mich denn auch?
Wenn Du Dir das Bild aus dem Link anguckst siehst Du,
dass Werte für den Verbrauch für (fast) beliebige Kombinationen
von Arbeit und Drehzahl vorliegen.
Wenn ich Dich richtig verstanden habe, hast Du (übertragen von
Deinem Problem) z.B. Messwerte des Verbrauchs für 1000 Umdrehungen/
2 J/cm3, 2000 Umdrehungen/4 J/cm3, 3000 Umdrehungen/6 J/cm3.
Aus diesen Informationen kann man kein Höhenprofil gewinnen.
Es werden in diesen Plots ja Linien gleicher Höhe dargestellt.
D.h. wenn Du an der Stelle 2000 Umdrehungen/ 8 J/cm3 eine Information haben willst, dann musst Du dort auch messen.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:40 Mi 26.12.2007 | Autor: | martin111 |
Okay, dann komm bitte von meinem geschilderten Problem (Temperatur) weg.
Letztendlich hat man bei diesem Beispiel (dein Link) aber auch nur 3 Messgrößen, oder?
Ich habe eine Messung vorliegen. In der Messung sind mehrere Messgrößen enthalten, alle unterschiedl. abgetastet (1mal in 10ms, andere 100ms etc.). Vektor ist eben so lang, wie auch die Messung gemacht wurde.
Nun will ich mir aus dieser Messung unterschiedl. Messgrößen in Matlab laden. Ist auch schon erledigt.
Z.B. Motortemperatur, Drehzahl, Fahrpedalstellung etc.
Diese Vektoren interpoliere ich mit der Zeit, damit ich trotz unterschiedl. Abtastung gleichlange Vektoren erhalte.
Wenn ich jetzt aus der riesigen Messung meine 3 Messgrößen habe, gibt es z.B zu 100% Pedal, und Motortempe. 80°C auch unterschiedl. Drehzahlen.....
Und nun muss ich dies doch in dem Contour-Befehl darstellen können?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:57 Mi 26.12.2007 | Autor: | nschlange |
Das mit den drei Messgrößen ist ja schön und gut,
es kommt aber auch auf die Messwert-Paarung an.
Stell Dir vor, Du stellst Deine Werte im Raum dar.
Dann guckst Du von oben auf die xy-Ebene.
Diese contour-Plots stellen Bereiche einer Größe(Höhe)
in der gleichen Farbe dar.
Wenn Du auf deine Messwerte guckst (von oben) siehst Du nur eine
Gerade.
Zu dem neuen Problem:
Du willst die Drehzahl (z) über Pedalstellung (x) und Temp. (y)
darstellen?
Du hast zu genau einer Kombi von x und y mehrere z?
Ich glaube nicht, dass contour damit umgehen kann.
Kannst Du hierzu Beispieldaten geben?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:36 Mi 26.12.2007 | Autor: | nschlange |
Vielleicht wird Dir das anhand des folgenden kleinen Beispiels klarer:
Die einzelnen Graphen kannst Du mit 'Tools->Rotate 3D' rotieren.
1: | clear all;
| 2: | clc;
| 3: |
| 4: | [x,y]=meshgrid(-pi:0.2:pi);
| 5: | z=sin(x).*cos(y);
| 6: | mesh(x,y,z);
| 7: | view([-0.5 90]);
| 8: | figure;
| 9: | contour(x,y,z);
| 10: |
| 11: | figure;
| 12: | x=-pi:0.2:pi;
| 13: | y=-pi:0.2:pi;
| 14: | z=sin(x).*cos(y);
| 15: | plot3(x,y,z);
| 16: | view([-0.5 90]);
|
Der Unterschied ist einfach, dass im ersten Teil mit meshgrid
die z-Werte für alle Kombinationen von x und y berechnet werden.
Daraus ergibt sich eine Fläche.
Im zweiten Teil wird nur z(i)=sin(x(i))*cos(y(i)) für i = -pi bis pi
berechnet. In der Projektion auf die xy-Ebene ergibt sich eine Gerade,
so wie bei Deinen Messwerten. (Wenn ich Dich richtig verstanden habe...)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:26 Mi 26.12.2007 | Autor: | martin111 |
Das verstehe ich ja auch nicht.
Wie gesagt, das Programm UniPlot macht mir anhand dieser Messwerte ein Muschel bzw. Höhenliniendiagramm.
y-Achse würde ich immer die Zeitachse (Länge der Messung) wählen.
x-Achse will ich variieren, Pedalstellung, Drehzahl etc.
Und als Höhenlinien Motorleistung, Drehmoment etc.
Mit UniPlot geht das, dacht dies kann ich dann auch in Matlab umsetzen?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:36 Mi 26.12.2007 | Autor: | nschlange |
Dann gib doch mal die Messwerte...
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:45 Mi 26.12.2007 | Autor: | martin111 |
stell sie morgen rein.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:18 Do 27.12.2007 | Autor: | martin111 |
Habe mir die Daten als Mat-File an der FH gespeichert. Jetzt kann ich das File daheim leider nicht öffnen.........
Noch mal kurz genauer erklärt was ich machen will:
Gegeben ist eine beliebig lange Messung von verschiedenen Messgrößen an einem Fahrzeug (Drehzahlen, Temperaturen, Leistung etc.)
Alles Vektoren mit 1xLänge der Messung.
Nun habe ich Messpunkte von der Raddrehzal links und Raddrehzahl rechts.
Gleichzeitig sind Messpunkte der Pedalstellung und der Messdauer gegeben.
Alle identisch lang.
Jetzt will ich die Differenz der Raddrehzahlen über die Messdauer (xAchse) und Pedalstellung (yAchse) plotten.
Dann sehe ich doch, zu welcher Pedalstellung und Zeitpunkt die größte Differenz der Raddrehzahlen stattfand?
Das müßte doch mit Contour funktionieren?
Werte sind ja aktuell egal, will ja auch die Plot-Gößen variieren und andere Größen als x-Achse wählen....
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:39 Do 27.12.2007 | Autor: | nschlange |
Ich hab hier R2007, stell doch die Datei rein, vielleicht kann ich (oder
jemand anderes) sie ja lesen.
Noch ein letzter Versuch:
Du willst Die Drehzahldifferenz (z) über
Zeit (x) und Pedalstellung (y) auftragen.
Das geht mit contour nur dann, wenn Du für
die Zeit x=1 Messungen der Drehzahl für Pedalstellung y=1, y=2, y=3 usw.
hast.
Zum nächsten Zeitpunkt x=2 brauchst Du wieder Messungen der Drehzahlen bei den Pedalstellungen y=1, y=2, y=3 usw
Liegen diese Daten vor?
Oder hast Du nur Messungen bei x=1/y=1, x=2/y=2 usw?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:59 Fr 28.12.2007 | Autor: | martin111 |
Hier mal die Mat-File.
Datei-Anhang
Dateianhänge: Anhang Nr. 1 (Typ: mat) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:56 Sa 29.12.2007 | Autor: | nschlange |
Hi,
ich kann das öffnen.
Ich hab die Messwerte mal 3dimensional plotten lassen.
Weiterhin hänge ich mal einen Contour-Plot von Origin an.
In wie weit das sinnvoll ist musst Du selbst beurteilen.
Evtl könnte man in Matlab mit griddata die fehlenden Stellen
interpolieren.
[Dateianhang nicht öffentlich]
[Dateianhang nicht öffentlich]
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich] Anhang Nr. 2 (Typ: jpg) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:58 So 30.12.2007 | Autor: | nschlange |
Hi,
hier ein Weg, eine flächenhafte Darstellung der Daten
zu erhalten:
1: |
| 2: | clear all;
| 3: | clc;
| 4: | load daten.mat;
| 5: | zAchse=MP1-MP2;
| 6: | tri=delaunay(xAchse,yAchse);
| 7: | trisurf(tri,xAchse,yAchse,zAchse);
| 8: | %shading interp;
|
Im Anhang außerdem die Daten als Excel-Datei...
xAchse yAchse MP1 MP2
Datei-Anhang
Dateianhänge: Anhang Nr. 1 (Typ: xls) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:07 Fr 04.01.2008 | Autor: | martin111 |
Wirklich herzlichen Dank.
Inwieweit die Daten sinnvoll kann ich leider auch noch nicht beurteilen.
Mir ist auf jeden Fall geholfen wenn ich jetzt weiß wie ich das Plotten kann, welche Daten ich jetzt verwende mal schauen.
Diese Daten waren ja nur ein Test und eigentl. nicht sinnvoll. Mal schauen wie es mit anderen Messgrößen herauskommt.
Danke
|
|
|
|