ich habe vier Datensätze. Es handelt sich um Daten von einem Industrieroboter, die mit 4ms aufgenommen wurden.
Ich möchte nun die 4 Datensätze in Matlab einlesen und in einer gemeinsamen Matrix darstellen und verschieden Spalten plotten, wobei Spalte 1 die Zeit darstellt.
Nur bin ich nicht sicher wie ich die Daten zusammenfügen kann. Das Problem ist dass jeder der vier Dateien bei einer Zeit von 0ms wieder startet. Ich möchte aber dass nur die Erste Datei bei 0ms startet und diese dann fortaufen bis zu dem Letzten Datensatz. Ist das möglich bzw. wie bekomme ich das hin die Datensätze in Matlab zu verbinden sodass die Zeit immer fortlaufend ist? Im Anhang sind die Datensätze.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Nur ein kleiner Fehler ist mir aufgefallen. Bei dem Übergang von ein Datensatz in den nächsten steht bei der Zeit der selbe Wert. Es müsste hier beim übergang um den Wert 4 höher sein. Also als Beispiel Datensatz 1 am Ende:
Bei M3 und M4 solltest du noch auf den Dateinamen achten.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Hallo, habe hierzu noch eine Frage. Ist es möglich die Daten Zeitlich zu plotten? Also damit meine ich folgendes:
Ich habe die Daten mit einem Sensor mit 4ms aufgenommen. Ich möchte die Daten nun so Zeitlich ablaufen lassen dass diese auch so visualisiert werden. Also dass ich im Plot diagramm sehe wie sich die Werte pro Sekunden laufend verändern.
versuche es mal mit
animatedLine
.
Wenn dir das nicht weiterhilft: mein Eindruck ist, dass du eine Art Animation möchtest - mir ist aber nicht klar, was genau. Dann müsstest du das genauer beschreiben. Sollen insbesondere nur am Ende der Kurven neue Punkte hinzukommen oder auch Punkte am Anfang wieder entfernt werden, so dass man quasi immer ein Fenster der letzten x Sekunden sieht?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ja ich denke animatedline geht in die richtige Richtung.
Die gemessenene Werte stellen Kräfte dar. Ich habe den Ablauf des Versuches am realen Aufbau mit einer Video-Kamera festgehalten. Nun möchte ich eben den Matlab plot so ablaufen lassen als wenn ich die Daten direkt messen würde. Also ich möchte mein Video ablaufen lassen und paralell dazu den Matlab plot. Sodass ich am Video sehe was geschieht und am Matlab-Plot wie die Kräfte sich real verändern.
Es sollen also keine Neuen Punkt hinzukommen sondern der plot sollte sich so in Echtzeit verändern wie die Messung vorgenommen wurde.
möchtest du also die Animation auf Echtzeit "einbremsen"? Das kannst du mit
pause
erreichen.
Wenn du immer nur die momentane Kraft sehen möchtest, könnte
bar
die bessere Wahl sein.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ich habe nun fast das genau hinbekommen was ich haben möchte. Mein plot wird nun animiert. Jedoch stimmt die Zeit nicht mit der realen Zeit zusammen.
Also die Daten wurden in einem Abstand von 4 millisekunden aufgenmmen. Wenn ich nun mein plot animieren lasse stimmt diese Zeit nicht mit der "realen" Zeit zusammen. Ich möchte genau dass in meinem plot genau 1 Sekunde auch 1 Sekunde in der "realen" Welt ist. Momentan läuft der plot langsam ab. Danke für eine Hilfe.
% Plot force data subplot(4,1,1);box on; hold on; grid on;
an1=animatedline(M(1,1)/1000,M(1,2));
an2=animatedline(M(1,1)/1000,M(1,3));
an3=animatedline(M(1,1)/1000,M(1,4));
%% Initialize video
myVideo = VideoWriter('myVideoFile'); %open video file
myVideo.FrameRate = 10; %can adjust this, 5 - 10 works well for me
open(myVideo)
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0011]);
set(gcf,'color','w');
%% Live plot set(gcf, 'Position', get(0, 'Screensize'));
for i=2:size(M,1)
% Plot force data
addpoints(an1,M(i,1)/1000,M(i,2));
addpoints(an2,M(i,1)/1000,M(i,3));
addpoints(an3,M(i,1)/1000,M(i,4));
% Plot torque data
addpoints(an4,M(i,1)/1000,M(i,5))
addpoints(an5,M(i,1)/1000,M(i,6));
addpoints(an6,M(i,1)/1000,M(i,7));
% Plot cartesian data X-Y
addpoints(an7,M(i,1)/1000,M(i,20)-84.84);
addpoints(an8,M(i,1)/1000,M(i,21)-105.74);
% Plot Z
addpoints(an9,M(i,1)/1000,M(i,22));
drawnow;
falls es dir um das fertige Video geht: müsste die Frame Rate nicht 1/0.004 = 250 sein?
falls es dir um das geht, was man bei der Erzeugung des Videos siehst: mit pause(0.004) pausierst du ja zu lange, weil das Verändern des Plots ja auch eine gewisse Zeit braucht. Ich würde also am Anfang der for-Schleife tic setzen und am Ende
Sollte eine Iteration länger als 0.004 Sekunden benötigen, sehe ich nur die Möglichkeit, mehrere Iterationen zusammenzufassen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Achso stimmt. Vielen Dank ich habe es nun hinbekommen
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.