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

Anfängerksript zum Matrix auslesen und schreiben

 

diri3l
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.01.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 02.07.2014, 10:39     Titel:
  Antworten mit Zitat      
Hi Ulli,

da gibts ein Missverständnis: Nach deiner For-Schleife habe ich ja 5 Matrizen, in denen jeweils die Maxima der einzelnen Spalten der Ausgangsmatrizen liegen.

Ich möchte jetzt aber aus Max1, Max2,... Max5 jeweils den ersten Wert in einem Plot haben. In dem Plot befinden sich dann also 5 Punkte, die jeweils dem ersten Eintrag in Max1, Max2, Max3,... entsprechen. Gleiches dann für den nächsten Plot, bis Plot 4117.

Verschiedene Farben sind also auch nicht nötig.

Code:

% Speicher vorbelegen
Max1 = zeros(4117, 1);
Max2 = zeros(4117, 1);
Max3 = zeros(4117, 1);
Max4 = zeros(4117, 1);
Max5 = zeros(4117, 1);


for i = 1:4117
   
    Max1(i) = max(v_res_1(:,i)); % Finden der Maxima der einzelnen Schläge an ML 1
    Max2(i) = max(v_res_2(:,i)); % Finden der Maxima der einzelnen Schläge an ML 2
    Max3(i) = max(v_res_3(:,i));
    Max4(i) = max(v_res_4(:,i));
    Max5(i) = max(v_res_5(:,i));
   
   
end

for i = 1:4117


    hold on
   
    plot(Max1(i,1));
    plot(Max2(i,1));
    plot(Max3(i,1));
    plot(Max4(i,1));
    plot(Max5(i,1));
   
    hold off
   
    print('-depsc2', sprintf('/Pfad/Schlag_%04d.eps', i));
   
end


Aber das stimmt so noch nicht ganz.
Private Nachricht senden Benutzer-Profile anzeigen


diri3l
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.01.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 02.07.2014, 11:07     Titel:
  Antworten mit Zitat      
Was nicht stimmt ist, dass die Punkte trotzdem noch vertikal aufgetragen werden. Eigentlich müssten ja 5 Punkte irgendwo im Plot verteilt sein. Hier sind aber alle übereinander auf der 1 der X-Richtung. Haben also alle unterschiedliche y- aber den gleichen X-Wert.

Habe versucht das mal wieder zu Transponieren, was aber auch nix bringt :/

Code:
% Speicher vorbelegen
Max1 = zeros(4117, 1);
Max2 = zeros(4117, 1);
Max3 = zeros(4117, 1);
Max4 = zeros(4117, 1);
Max5 = zeros(4117, 1);


for i = 1:4117
   
    Max1(i) = max(v_res_1(:,i)); % Finden der Maxima der einzelnen Schläge an ML 1
    Max2(i) = max(v_res_2(:,i)); % Finden der Maxima der einzelnen Schläge an ML 2
    Max3(i) = max(v_res_3(:,i));
    Max4(i) = max(v_res_4(:,i));
    Max5(i) = max(v_res_5(:,i));
   
   
end

Max1_vert = Max1';
Max2_vert = Max2';
Max3_vert = Max3';
Max4_vert = Max4';
Max5_vert = Max5';

for i = 1:4117

    hold on
   
    plot(Max1_vert(1,i));
    plot(Max2_vert(1,i));
    plot(Max3_vert(1,i));
    plot(Max4_vert(1,i));
    plot(Max5_vert(1,i));
   
    hold off
   
    print('-depsc2', sprintf('/Pfad/Schlag_%04d.eps', i));
   
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Dexter
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2014, 11:18     Titel:
  Antworten mit Zitat      
Deine Werte liegen alle auf x =1, da du zum plotten keine variable für die x-Achse angegeben hast. Da musst du dir also eine variable verwenden, in der die entsprechenden Werte für die x-Achse stehen oder eine neue erzeugen.
Private Nachricht senden Benutzer-Profile anzeigen
 
diri3l
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.01.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 02.07.2014, 15:12     Titel:
  Antworten mit Zitat      
Oha! Sonnenklar, danke hätte ich auch selbst drauf kommen können.

Wenn ich aber bei Plot die X-Werte mit eingebe, sieht es auch nicht anders aus:

Code:

for i = 1:4117

    hold on
   
    plot(15,Max1(1,i));
    plot(30,Max2(1,i));
    plot(60,Max3(1,i));
    plot(90,Max4(1,i));
    plot(120,Max5(1,i));
   
    hold off
   
    print('-depsc2', sprintf('/Verzeichnis/Schlag_%04d.eps', i));
   
end



Das müsste doch plot(x,y) sein... x ist hier 15 oder 30 oder 60,... und y der Wert aus der Matrix an der Stelle (1,i). Oder nicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
diri3l
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.01.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 02.07.2014, 16:05     Titel:
  Antworten mit Zitat      
Habs jetzt anders gemacht:

Code:
Hkurve = [Max1,Max2,Max3,Max4,Max5] % Alle Maxima der verschiedenen ML zu einer Matrix zusammenführen
   

for i = 1: 4117
   

plot(15,Hkurve(i,1))
hold on
plot(30,Hkurve(i,2))
plot(40,Hkurve(i,3))
plot(60,Hkurve(i,4))
plot(80,Hkurve(i,5))
hold off


print('-depsc2', sprintf('/Verzeichnis/Schlag_%04d.eps', i));


end
 


Ein Problem ergibt sich aber noch aus der Darstellung. Ich habe jetzt immer 5 einzelne Punkte in einem Plot, hätte die aber gerne mit einer Linie verbunden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Dexter
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2014, 16:08     Titel:
  Antworten mit Zitat      
Jetzt plottest du alle deine y-Werte wieder über einen jeweiligen x-Wert. Hier also über die x-Werte 15, 30, usw.

Da sollte sich ein Diagramm ergeben, in dem du deine y-werte in "Säulen" über den jeweiligen x-Werten hast.

Bau dir mal einen Vektor, also z.b.: H = [15;30;60;90;120] (Spaltenvektor) oder H = [15,30,60,90,120] (Zeilenvektor) und setze den als x. Ich weiß nicht ob es das ist was du möchtest, sollte aber auch funktionieren.

Edit: Okay hast es schon anders gelöst. Die Darstellung des Plots kannst du einfach verändern. Die verbindung der Punkte sollte über:

Code:


möglich sein.
Private Nachricht senden Benutzer-Profile anzeigen
 
diri3l
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.01.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 02.07.2014, 17:09     Titel:
  Antworten mit Zitat      
Hi Dexter, danke für deine Antwort. Die Verbindung der Punkte funktioniert aber leider nicht wenn man mit hold arbeitet. Aber du hast mich auf die Idee gebracht einen neuen Vektor für die X-Koordinaten zu erstellen.

Code:
ML= [15;30;70;90;140]

for i = 1:4117
   
   plot([ML(1,1),Hkurve(i,1)],[ML(2,1),Hkurve(i,2)],[ML(3,1),Hkurve(i,3)],[ML(4,1),Hkurve(i,4)],[ML(5,1),Hkurve(i,5)])
   
   print('-depsc2', sprintf('/Verzeichnis/Schlag_%04d.eps', i));
   
end

... was dummerweise auch nicht funktioniert.

Laut der Fehlermeldung müssen die Daten für Plot in einer einzigen Matrix stehen -.-"

Am besten wirds sein, wenn ich in der Matrix Hkurve noch eine Zeile einfüge, wo dann die Werte 15, 30, 70, 90, 140 drinnen stehen. Oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
TurboUlli
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 26.05.14
Wohnort: NRW
Version: 2014a
     Beitrag Verfasst am: 03.07.2014, 00:29     Titel:
  Antworten mit Zitat      
Hi,

versuchs mal damit Smile

Code:

ML= [15;30;70;90;140]

for i = 1:4117
   
   plot(ML, [Hkurve(i,1) Hkurve(i,2) Hkurve(i,3) Hkurve(i,4) Hkurve(i,5)])
   
   print('-depsc2', sprintf('/Verzeichnis/Schlag_%04d.eps', i));
   
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
diri3l
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.01.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 03.07.2014, 12:52     Titel:
  Antworten mit Zitat      
TurboUlli hat Folgendes geschrieben:
Hi,

versuchs mal damit Smile

Code:

ML= [15;30;70;90;140]

for i = 1:4117
   
   plot(ML, [Hkurve(i,1) Hkurve(i,2) Hkurve(i,3) Hkurve(i,4) Hkurve(i,5)])
   
   print('-depsc2', sprintf('/Verzeichnis/Schlag_%04d.eps', i));
   
end
 


Oh man!

Muss ich da nicht noch angeben, welche Zellen er in der Matrix "ML" nehmen soll?

Na! Und damit hab ich gestern 3 Stunden verbracht Very Happy Aber jetzt läufts. Wiedermal vielen Dank dafür!

Im Anhang mal ein Plot davon, wie es jetzt aus sieht.

2.png
 Beschreibung:

Download
 Dateiname:  2.png
 Dateigröße:  5.89 KB
 Heruntergeladen:  187 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
TurboUlli
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 26.05.14
Wohnort: NRW
Version: 2014a
     Beitrag Verfasst am: 03.07.2014, 19:04     Titel:
  Antworten mit Zitat      
Sehr schön Smile

Nein, du musst nicht explizit angeben, welcher Punkt zu welchem gehört.
Viel eher nimmt Matlab an, dass der erste Punkt x1 zum ersten Punkt y1 gehört usw.
D.h. du erstellst eine Matrix bzw. zwei Vektoren, die entsprechend immer zugehörige Werte im gleichen Index haben.

Deshalb war deine vorherige Variante im Grunde immer ein Vektor mit zwei Werten.
Private Nachricht senden Benutzer-Profile anzeigen
 
diri3l
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 25.01.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 04.07.2014, 20:44     Titel:
  Antworten mit Zitat      
Was dann natürlich auch die Fehlermeldung erklärt. Wunderbar, wieder was gelernt.

Soweit bin ich mit meiner Studienarbeit durch, jetzt heißt es schreiben :/

Danke auf jeden Fall für die Hilfe, so schnell wäre das sonst nicht alles von der Hand gegangen!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.