Verfasst am: 08.06.2014, 21:41
Titel: Script-File erstellen um DTA-Datei einzulesen und zu plotten
Hallo zusammen,
ich bin ein absoluter Matlab- und Programmier-Neuling. *Mit gutem Willen es zu lernen.
Ich möchte ein Script-file erstellen, mit dem ich eine bestimmte Spalte (mit mehreren Zeilen) gegen eine anderen Spalte plotten kann.
Die Frage klingt recht einfach, aber an ihrer Umsetzung scheitere ich zur Zeit.
Könnt ihr mir da behilflich sein?
Ich habe in den Anhang ein Beispiel gepackt. Zum Beispiel möchte ich hier die Spalte d (X-Achse) gegen e (Y-Achse) plotten.
Jetzt habe ich aber nicht nur eine dieser Dateien, sondern acht und möchte aber immer die gleichen Spalten gegeneienander aufgetragen haben. Ich möchte gerne ein Script erstellen, der mit die Arbeit vereinfachen und für alle Dateien die ich möchte durchführen soll. Ist die Umsetzung so wie ich mir das vorstelle irgendwie möglich?
PS.: Ich bin wirklich absoluter Programmier-Neuling...bitte möglichst "einfach" (sofern eben möglich) erklären.
So ich habe heute morgen einwenig rumprobiert und das ist nun ein Lösungsweg.
1. Die Dateien im Current Folder suchen.
1. Die Datei die ihr plotten möchtet: Erst die Matrix der entsprechenden Datei/Dateien auswählen
2. Über Import Data wird die Matrix in die Workspace eingelesen (Workspace sollte vllt. immer mal wieder abgespeichert werden!)
3. Im Command Window werden die Variablen der Matrix wie folgt definiert eingegeben:
Code:
%Eingabebefehl im Command Window (Ihr könnt euch das vorher als Script(Editor-Dat.) in Matlab anlegen! Einfach auf New Script klicken und los geht's.)
>> d=Test(:,4); % d ist die Variable die ihr definiert und "Test" ist die Datei aus der ihr die spalte einlesen wollt; Die Zahl "5" gibt die spalte an, die ihr plotten möchtet;
e=Test(:,5); % -"- (gleiche wie oben)
% Plotten des Diagramms figure(1); % das braucht ihr nur wenn ihr mehrere Dateien einlesen wollt um diese dann als einzelnde figuren zu plotten; plot(e,d) legend({'LILA1},'Location','EastOutside')% so legt ihr eine zum Beispiel eine Legende außerhalb der figur an; title('LILA1'); % das ist der Titel eurer Figur; xlabel('blabla [Einheit]'); % so gebt ihr eure Achsenbeschriftung der x-Achse an ylabel('-blabla [Einheit]'); % so gebt ihr eure Achsenbeschriftung der x-Achse an % Jetzt nur noch als Figur abgespeichern!
Am besten speichert ihr euren Script-File und Workspace damit ihr beim nächste Öffnen der Datei noch alle eure Ausarbeitungen habt und nicht alles neu schreiben müsst.
------------------------------------------------------
Wenn ihr nun mehrere Dateien habt, sagen wir:
Test1
Test2
Test3
Dann könnt ihr folgendes Script anlegen:
Code:
>> d1=Test1(:,4);
e1=Test1(:,5);
>> d2=Test2(:,4);
e2=Test2(:,5);
>> d3=Test3(:,4);
e3=Test3(:,5);
% Plotten der Einzeldiagramme
%Test1
figure(1);
plot(e1,d1) legend({'LILA1},'Location','EastOutside') title('LILA1');
xlabel('Parameter [Einheit]');
ylabel('-Parameter[Einheit]');
%Jetzt nur noch als Figur abgespeichern!
%Test2
figure(2);
plot(e2,d2) legend({'LILA2},'Location','EastOutside') title('LILA1');
xlabel('Parameter [Einheit]');
ylabel('-Parameter [Einheit]');
%Jetzt nur noch als Figur abgespeichern!
%Test3
figure(3);
plot(e3,d3) legend({'LILA3},'Location','EastOutside') title('LILA1');
xlabel('Parameter [Einheit]');
ylabel('-Parameter [Einheit]');
%Jetzt nur noch als Figur abgespeichern!
%Plotten als Zusammenfassung in einer Figur (zusätzlich zu den anderen Figuren) geht wie folgt:
%Test1,2,3 figure(4);
plot(e1,d1,e2,d2,e3,d3) legend({'LILA1', 'LILA2', 'LILA3'},'Location','EastOutside') title('LILA-Zusammenfassung');
xlabel('Parameter [Einheit]');
ylabel('-Parameter [Einheit]');
%Jetzt nur noch als Figur abgespeichern!
Das wäre jetzt ein Lösungsansatz von mir.
Ich bin mir sicher es gibt noch schnellere Wege, aber ein Ansatz ist es um dahin zu kommen, wo man hin will.
*viele Wege führen nach Rom
Wenn ihr Ideen habt das ganze schneller zu gestalten, dann immer her damit.
Verfasst am: 15.06.2014, 20:55
Titel: Matlab-Script zum Plotten mehrerer Kurven aus mehreren Datei
MATLAB Mehrere Plots in einer Figur
Erstelle dir ein Script mit der Editor-Funktion in Matlab
Lade deine Daten in den Current Folder
Importiere deine Daten: Gehe auf die entsprechende Datei z.B. eine Editor-Datei oder Excel-Datei -> Rechtsklick -> Import Data
Dort wählst du den gesamten Zahlenbereich aus und klickst Matrix an
Klick auf den kleinen Pfeil neben Import Section und wähle Import Data aus.
Diese Daten werden nun in deine Workspace importiert (die Workspace ist deshalb wichtig, da alle Befehle, sowie Variablen-Definitionen, die gemacht werden dort eingespeichert und abgerufen werden.)
Ein Semikolon ; am Ende eines Befehls im Command Window verhindert, das der Befehl gleich ausgeführt wird.
Der Befehl hold on verhindert, dass Matlab durcheinander kommt, wenn er mehrere Plots innerhalb einer Figur darstellen soll.
Der Befehl: p1=plot(x1,y1,'.','Color',[0 0 0]);hold on
beinhaltet den Befehl
a)x1 gegen y1 zu plotten
b)Die Messpunkte sind als Punkte dargestellt durch den Befehl '.'
c) mit 'Color',[0 0 0] definiert man die Farbe die dargestellt wird.
d)[0 0 0] ist eine Farbmatrix der Form [r g b] bzw. [rot grün blau] und werden mit Zahlen von 0.0 bis 1.0 angegeben. Zum Beispiel ist [0 0 0]= Schwarz.
Die Legende wird mit folgendem Befehl ausgegeben:
legend({'Messung1','Messung2','Messung3','Messung4' },'Location','EastOutside')
wobei 'Messung1': Messkurvenbezeichnung die selbst gewählt werden kann
und 'Location','EastOutside': gibt an, wo die Legende plaziert wird, nämlich östlich außerhalb des Diagrammbereichs
set(gca,'xscale','log'); hold on : gibt an, das die x-Achse logarithmisch dargestellt werden soll; entsprechendes gilt für set(gca,'yscale','log'); hold on.
xlabel('Variale x [Einheit]'); : hier legt ihr eure Achsenbeschriftung mit Einheit fest
Achtung:
x1,y1,x2,y2,x3,y3,x4,y4 : sind die Variablen die ihr definiert
Test1,Test2,Test3,Test4 : sind die Dateien aus der ihr die Spalte eure Variable definiert
3 und 7 : Spalte 3 (definiert ihr als x) ; Spalte 7 (definiert ihr als y) Sind die Spalten die ihr gegeneinander plotten möchtet
Code:
%Beginn des Matlab-Scriptes
%1.Definition der Variablen [x1,y1,etc.] aus den Dateien [Test1,etc.]
x1=Test1(:,3);
y1=Test1(:,7);
x2=Test2(:,3);
y2=Test2(:,7);
%---
x3=Test3(:,3);
y3=Test3(:,7);
%---
x4=Test4 (:,3);
y4=Test (:,7);
%1.Alle Plots in einer Figur darstellen
figure(1);
p1=plot(x1,y1,'.','Color',[000]);hold on
p2=plot(x1,y1,'.','Color',[0.00.00.8]);hold on
p3=plot(x1,y1,'.','Color',[0.40.00.4]);hold on
p4=plot(x1,y1,'.','Color',[0.40.00.0]);hold on
set(gca,'xscale','log'); hold on
set(gca,'xscale','log'); hold on
legend({'Messung1','Messung2','Messung3','Messung4'},'Location','EastOutside') title('Zusammenfassung-1');
xlabel('Variale x [Einheit]');
ylabel('Variable y [Einheit]');
% wird als Figur abgespeichert!
Matlab Script zum Plotten mehrere Kurven aus mehreren Dateien.docx.pdf
Dateigröße:
54.69 KB
Heruntergeladen:
847 mal
Einstellungen und Berechtigungen
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
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.