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

Bar Plot nutzen?

 

atzplzw
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 20.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2008, 00:45     Titel: Bar Plot nutzen?
  Antworten mit Zitat      
Hi!

Ich habe mehrere arrays mit doubles. Diese schauen so aus:
a = [ 0.5 1; 1.2 2.51; 5 7; 100.32 500.132 ]

Diese möchte ich jetzt linear plotten aber mit Linien/Balken zwischen den Werten.
Im Moment bin ich so weit, dass ich die Punkte zeichnen kann:
plot(a(1:end),1)

Wie kann ich nun eine Linie zwischen der 1. und 2. Spalte des arrays machen?
Also ich möchte gern eine Verbindung zwischen 0.5 und 1, dann leer und dann wieder 1.2 bis 2.51.


Ein Balken wäre auch toll, so als extra Option falls das geht.


Danke für eure kompetente Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 24.01.2008, 05:40     Titel:
  Antworten mit Zitat      
Hmm wie wäre es wenn Du erstmal die Koordinate des Mittelpunkts der beiden Spalten berechnest:
also
Code:

b = mean(a)
% oder transponiert
b = mean(a')

 


und dann mittels bar plotten

Code:

_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 24.01.2008, 09:39     Titel:
  Antworten mit Zitat      
Sind die Werte im Vektor a also Grenzen für Intervalle von x-Werten, zwischen denen etwas geplottet werden soll?

Sprich: Soll bspw. zwischen den X-Werten 0.5 und 1 eine Linie liegen, dann wieder zwischen 1.2 und 2.51, zwischen 5 und 7, usw?

Code:
semilogx(a(1,:),ones(1,2),a(2,:),ones(1,2),a(3,:),ones(1,2),a(4,:),ones(1,2))

So hab ich es jetzt mal geplottet, der Übersichtlichkeit halber mit logarithmisch skalierter x-Achse.

Um Linien zu bekommen muss man darauf achten, dass die Variable mit den y-Werten so viele Elemente hat wie die mit den x-Werten. In diesem Fall also eine 1x2-Matrix.

Anmerkung: Mit ones(n,m) erzeugt man eine nxm-Matrix mit lauter Einsen als Zelleninhalt.
Private Nachricht senden Benutzer-Profile anzeigen
 
atzplzw
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 20.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2008, 11:29     Titel:
  Antworten mit Zitat      
keloid hat Folgendes geschrieben:
Sind die Werte im Vektor a also Grenzen für Intervalle von x-Werten, zwischen denen etwas geplottet werden soll?

Sprich: Soll bspw. zwischen den X-Werten 0.5 und 1 eine Linie liegen, dann wieder zwischen 1.2 und 2.51, zwischen 5 und 7, usw?


Ja, genau. Code geht super. Muss ich jetzt nur noch in eine for schleife packen und schon funktionierts. Hoffentlich...
Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 24.01.2008, 11:35     Titel:
  Antworten mit Zitat      
Wenns nicht klappt, meld Dich einfach.
Private Nachricht senden Benutzer-Profile anzeigen
 
atzplzw
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 20.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2008, 19:14     Titel:
  Antworten mit Zitat      
keloid hat Folgendes geschrieben:
Wenns nicht klappt, meld Dich einfach.


Danke für das Angebot, welches ich gleich annehme!

Ich habe jetzt mal versucht das irgendwie mit einer for Schleife zu machen. Aber leider keinen Erfolg. Du hast ja das ones() gleich bei plot mit eingegeben.
Nur muss ich das ja jetzt in das array mit einfügen?? Bin da ein bisschen ratlos...
Private Nachricht senden Benutzer-Profile anzeigen
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 25.01.2008, 10:35     Titel:
  Antworten mit Zitat      
Welchen Teil genau möchtest Du denn gerne in eine Schleife packen?

Also: Wie sehen die Eingabedaten aus, und wie möchtest Du sie gerne verarbeiten?
Private Nachricht senden Benutzer-Profile anzeigen
 
atzplzw
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 20.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.01.2008, 11:35     Titel:
  Antworten mit Zitat      
Also ich habe eine cell mit 10 oder mehr arrays. Die arrays bestehen wie oben aus 2 Spalten, wobei die erste Spalte Anfang und zweite Spalte Ende der Linie darstellt.
Hier ein Beispiel:
Code:

cell = { [6.513 6.619; 9.14 9.51; 9.73 9.87;] [ 0 1.08; 1.9 2.1; 2.6 3.8; 4 5.1; ] }'
 


Jetzt hatte ich mir das so gedacht, dass ich jedes array auf y in 0.1 Schritten plotte. Also beginnend mit 0.1 bis 1.

Die Punkte alleine ist jetzt kein Problem:
Code:

for i=1:size(cell,1)
    for j=1:size(cell{i,1},2)
        plot(cell{1,1}(:,j),i/10)
        hold on
    end
end
 


Nur ich muss ja noch Linien dazwischen bekommen...

Zuletzt bearbeitet von atzplzw am 25.01.2008, 13:03, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 25.01.2008, 12:27     Titel:
  Antworten mit Zitat      
Leider weiss ich nicht, woher der "table" kommt, ich habe ehrlich gesagt auch wenig mit Plots zu tun ;)

Unter Annahme, dass Du immer Wertepaare hast, die Anfangs- und Endpunkt angeben, wäre Folgendes möglich:

Code:
for i=1:size(cell,1)
for j=1:size(cell{i,1},1)
plot(cell{i,1}(j,:),ones(1,2))
hold on
end
end


So durchläuft er alle Array-Einträge im Cell-Array (size(cell,1} gibt die Anzahl an Wertearrays, size(cell{i,1},1) gibt die Anzahl Wertepaare pro Wertearray) und plottet die Wertepaare der Reihe nach mit Einsen als y-Werten.
Private Nachricht senden Benutzer-Profile anzeigen
 
swera
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 12.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2015, 08:08     Titel:
  Antworten mit Zitat      
Ach so machst du das...
In der Hilfe zu uigetfile(...,'multiselect','on') steht aber, dass filenames breits ein cell-array mit strings ist. Du brauchst es also nicht mehr umschreiben in titel, sondern kannst es gleich für die Legende verwenden.
_________________

We provide fast success in http://www.learnalanguage.com/learn-french/ dumps exam by using our high quality www.learnalanguage.com prep resources. We offer up-to-dated and join www.bfit.edu dumps with Rasmussen College guarantee of network+ training success
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.