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

3D Plot contour

 

Atmos_kk
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2011, 14:41     Titel: 3D Plot contour
  Antworten mit Zitat      
Hallo zusammen,

ich möchte gerne in Matlab ein Höhendiagramm erstellen allerdings meckert Matlab immer bei meinen Vektoren.

Kann mir einer sagen, wie meine Vektoren formatiert sein müssen um da was ordentliches zu bekommen?

Zu meinen Werten:

x=Frequenz [1x4751]
y=Zeit [1x4751]
z=Beschleunigung [1x4751]

ich weiß im Moment wirklich nicht wie ich weiter vorgehen soll.

Greetz
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.05.2011, 15:54     Titel: Re: 3D Plot contour
  Antworten mit Zitat      
Hallo Atmos_kk,

Um Dir einen Rat geben zu können, müsstest Du noch den dazugehörigen Code und die Fehlermeldung kopieren. Dass "Matlab meckert" und Du ein "Höhendiagramm" erstellen möchtest, ist zu wenig Information.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2011, 16:02     Titel:
  Antworten mit Zitat      
Moin,

warum soll ich Sachen hochladen die so völlig falsch sind wie meine?

Der Code ist relatif einfach:

contour(X,Y,Z);


Fehlermeldung:

??? Error using contour at 73
Z must be size 2x2 or greater

Error in peakserfassen at 230
contour(X,Y,Z);


[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 31.05.2011, 16:08     Titel:
  Antworten mit Zitat      
Das kann eigentlich auch nicht funktionieren weil du meiner Meinung nach für ein Kennfeld 2 Vektoren und eine Matrix benötigst.
Man kann aus 3 Vektoren nicht direkt ein kennfeld erzeugen, wie auch...

Du müsstest also aus einem Vektor mit Hilfe der beiden anderen eine Matrix berechnen. Das geht wenn du zum Beispiel den darzustellenden Messwert systematisch abhängig von den beiden anderen aufnimmst.
Damit würdest du Messpunkte in einem fiktiven Kennfeld aufnehmen.

a = [1 1 2 2 3 3 4 4];
f = [1 2 1 2 1 2 1 2];
t = [4 2 6 3 6 3 6 4];

Daraus könntest du zum beispiel ein Kennfeld erzeugen mit den Achsenvektoren.
a_new = [1 2 3 4];
f_new = [1 2];

Deine Matrix hätte damit 2*4 Elemente, was ja auch die Summe der Elemente deines Vektors ist.
Code:

a = [1 1 2 2 3 3 4 4];
f = [1 2 1 2 1 2 1 2];
t = [4 2 6 3 6 3 6 4];

for i=1:length(a)
    t_mat(a(i),f(i)) = t(i);
end
a_new = [1 2 3 4];
f_new = [1 2];
contour(f_new,a_new,t_mat);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2011, 07:37     Titel:
  Antworten mit Zitat      
Moin zusammen,

also das mit der Matrix hab ich verstanden aber da hört es auch schon wieder auf.
Ich kann doch nicht einfach meine Messpunkte verringern. Dabei gehen doch ganz klar zu viele Daten verloren. Oder verstehe ich das schon wieder falsch?
Aus a mache ich 1/2 und f wird soger 1/4?
Das muss doch auch anders gehen!

Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 01.06.2011, 07:51     Titel:
  Antworten mit Zitat      
Sagen wir du willst Messbereiche abhängig von a und f aufnehmen, dann kannst du dir das quasi als Messkennfeld vorstellen.
Das kannst du entweder Spaltenweise (mx steht für Messungsnummer)

a
1 2 3 4

1 m1 m3 m5 m7
f 2 m2 m4 m6 m8

oder Zeilenweise machen

a
1 2 3 4

1 m1 m2 m3 m4
f 2 m5 m6 m7 m8

Je nachdem wie du die Messungen aufnimmst bekommst du unterschiedliche Messvektoren.
Spaltenweise:
a = [1 1 2 2 3 3 4 4];
f = [1 2 1 2 1 2 1 2];
t = [m1 m2 m3 m4 m5 m6 m7 m8];

Zeilenweise:
a = [1 2 3 4 1 2 3 4];
f = [1 1 1 1 2 2 2 2];
t = [m1 m2 m3 m4 m5 m6 m7 m8];

Daraus kannst du jetzt ja wieder die Messmatrix aufbauen die du abgefahren bist.

also
m1 m3 m5 m7
m2 m4 m6 m8

oder eben zeilenweise.....

somit kriegst du die Achsenvektoren
a_new = [1 2 3 4];
f_new = [1 2];

und es fehlen keinerlei Messwerte...
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2011, 08:04     Titel:
  Antworten mit Zitat      
Moin mawi,

anscheinend ist das etwas zu hoch für mich!

Also mein Problem ist, dass ich im Moment nicht weiß wie ich das realisieren soll.

Abhängig voneinander sind alle Vektoren. Ich habe bei der Messung die Beschleunigung über die Zeit aufgenommen in 6 Messungen. Mit allen eine FFT durchgeführt, diese gemittelt und dann wieder in Beschleunigung über die Zeit aufgetragen. Nun muss ich wieder eine FFT mit den neuen Werten machen und habe dann meine 3 Vektoren für Beschleunigung (a), Zeit (t) und Frequenz (f).
Das heißt aber für mich, dass ich garkeinene Matrix aus 2 Vektoren mehr erstelle. Ich will nur auf die x-Achse die Frequenz auftragen, auf die Y-Achse die Zeit und auf die z-Achse die Beschleunigung und die 3 Vektoren sind doch bereits vorhanden! Wozu also etwas berechnen?

Wenn du noch den Nerf und die Zeit dazu hast mir das zu erklären, immer zu.

Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 01.06.2011, 08:26     Titel:
  Antworten mit Zitat      
Hallo Atmos,
mit deinen drei Vektoren kannst du höchstens eine Linie in ein 3D-Plot zeichnen
Code:

x = [ 1 2 3 4 6];
y = [ 1 3 4 6 7];
z = [ 1 2 4 5 6];

plot3(x,y,z)


Wenn du unbedingt ein Höhendiagramm brauchst lies dir vllt erst mal
Code:

durch

mfg Chris
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 01.06.2011, 08:54     Titel:
  Antworten mit Zitat      
ok, ich hab dich etwas falsch verstanden.

Das Problem ist jedoch weiterhin, das der Z-Wert bei einem Kennfeldplot eine Matrix sein muss.
Wenn du 2 Vektoren der länge 6 hast brauchst du eine 6x6 Matrix.
Von diesen 36 Elementen hast du aber nur 6, alle anderen sind unbekannt.
Interpolieren/Extrapolieren ist bei so wenig Daten auch Blödsinn.

Ich fürchte BlackDread hat recht, die einzige möglichkeit ist plot3

Für ein contour, surf, etc...diagramm hast du einfach zu wenig werte.
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2011, 08:00     Titel:
  Antworten mit Zitat      
Moin zusammen,

alles ja ganz nett, aber wo mache ich denn dann meinen Fehler? Ich muss doch irgendwei aus meinen Messwerten ein Wasserfalldiagramm oder einen contour-plot erstellen können.

Kann mir einer sagen wie ich da hinkomme? Unsere Messsoftware bekommt das doch auch hin!

Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2011, 13:29     Titel:
  Antworten mit Zitat      
Hallo nochmal,

es muss doch jemanden geben, der mir in diesem Fall helfen kann! Irgendwie muss es doch dafür eine Lösung geben!

Greetz
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2011, 09:35     Titel:
  Antworten mit Zitat      
Hallo,

wenn Du einen Contour oder surface plot haben willst, benötigst Du eine Matrix. Die Matrix kannst Du durch Interpolation mit Hilfe von
Code:

erzeugen. Schau Dir mal das Beispiel in der Hilfe an.

Viele Grüße,

LittleX
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.