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

Daten für Plot triggern

 

kannstmasehn
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 12.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2016, 10:27     Titel: Daten für Plot triggern
  Antworten mit Zitat      
Hallo,

ich möchte ein paar Daten im nachhinein triggern, nur mir fehlt der Ansatz für Matlab. Im angehängten PDF sind links die Daten zu sehen, die ich direkt übereinander laufen lassen möchte, also in x-Richtung (Zeit t) sollen sie automatisch verschoben werden. Im rechten Plot sind die Referenzen zu sehen, die definieren sollen, wann was geplottet werden soll. Ich möchte dann auf der linken Seite 5 vollständige Durchgänge geplottet haben. Sprich er muss erstmal den Wert 0 und den Wert 5000 erreichen um das Plotten zu beginnen und das dann von 0-5000 5 mal durchlaufen, so dass ich quasi auf der rechten Seite im Minimum starte und nach 5 Durchläufen stoppe. Dazu soll zusätzlich die Zeit bei 0 anfangen.

Ist das verständlich ausgedrückt? Mein Gedankengang ist nun, dass ich einen Anfangspunkt in den Daten finde und diese dann in Vektoren schreibe, welche ich dann plotte.

Wie kann ich das umsetzen? Hat jemand eine Idee?

Vielen Dank schonmal.

untitled2.pdf
 Beschreibung:

Download
 Dateiname:  untitled2.pdf
 Dateigröße:  86.04 KB
 Heruntergeladen:  355 mal
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.07.2016, 11:27     Titel:
  Antworten mit Zitat      
was hast du denn bis jetzt versucht und welche fehler sind dabei aufgetreten?
für mich ist das ganze so noch nicht verständlich und ohne code und daten beispiel nur schwer nachzuvollziehen. siehe dazu auch den thread aus meiner signatur.
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
kannstmasehn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 12.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2016, 11:53     Titel:
  Antworten mit Zitat      
Naja ohne Ansatz kann ich nichts programmieren, daher die Frage welcher Ansatz da zu wählen ist. Ich möchte im Endeffekt die Vektoren an bestimmten Stellen abschneiden und diese dann plotten. Ist das eindeutiger?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.07.2016, 12:19     Titel:
  Antworten mit Zitat      
Zitat:
Ist das eindeutiger?

das ist zu allgemein um effektiv lösungsvorschläge zu machen. brich dein problem doch mal runter auf einzelne schritte die nacheinander realisiert werden müssen.
am anfang auch mit for-schleifen. das ist einfacher zu verstehen . bis jetzt verstehe ich nur das du vektoren irgendwie auseinadner schnibbeln willst.
gieb doch mal simple beispiel daten und was damit passieren soll.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
kannstmasehn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 12.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2016, 12:37     Titel:
  Antworten mit Zitat      
So soll das Ergebnis aussehen, also der endgültige Plot soll der zwischen den beiden roten Linien sein, wobei die Daten des linken Plots mit Hilfe des rechten gefunden werden sollen.



Mein bisheriger Code, natürlich kein Minimalbeispiel, die Messdaten sind angehängt

Code:

clear all, clc
files = dir('*.mat') ;
[num,dummy]=size(files);

%%%% Zähler für Datensätze

for i=1:num%-22
    filename= lower(files(i).name);
    a=load(filename);
    [xmaxdat,ymaxdat]=size(filename);

    %%%% Zuordnen der Daten
   
    time = a.Channel_1_Data;                                    % Zeit [s]
    volume_flow = a.Channel_7_Data;                             % Volumenstrom [l/min]
    voltage_output = a.Channel_8_Data;                          % Output_Voltage [V]
   
    %%%% Bildung gleitender Mittelwert
       
    window_size = 600;
    volume_flow_movavg = tsmovavg(volume_flow,'s',window_size,1);  
   voltage_output_movavg = tsmovavg(voltage_output,'s',window_size,1);
   
    %%%% Plotten der Graphen
   
    figure(1)
    subplot(2,1,1),plot(time,volume_flow_movavg), grid on, hold on
    xlabel('t [s]');  
    ylabel('Q [l/min]');
   subplot(2,1,2),plot(time,voltage_output_movavg), grid on, hold on
   xlabel('t [s]');  
    ylabel('V [kV]');  
end
 



Also das Programm liest die Dateien der Messwerte ein, dann werden die Daten zugeordnet, wie sie hinterlegt sind. Danach bilder ich gleitende Mittelwerte und plotte die Graphen. Das ist mein bisheriger Stand, der aber nicht wirklich etwas mit dem Problem zutun hat.

Die Daten sollen nun weiter aufbereitet werden. Die Daten des ersten Plots sind willkürlich aufgezeichnet, sprich die Graphen können mal nach rechts oder nach links in x-Richtung verschoben sein, daher möchte ich sie so abbilden, dass sie nicht versetzt sind, sondern fast übereinander. Dazu muss ich einen Anfangspunkt haben, den ich aus dem zweiten Plot entnehmen will. Also wenn ein bestimmtes V (zweiter Plot) erreicht ist, soll zum gleichen Zeitpunkt t der Plot von Q (erster Plot) beginnen.

Das wäre der erste Schritt. Quasi einen Trigger einsetzten, so dass z.B. das Plotten von Q bei dem ersten auftreten von V=0 beginnt.

7-Minuten-Intervall-2016_07_13_14_47_25_SRG1.rar
 Beschreibung:

Download
 Dateiname:  7-Minuten-Intervall-2016_07_13_14_47_25_SRG1.rar
 Dateigröße:  16.71 MB
 Heruntergeladen:  449 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
kannstmasehn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 12.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2016, 15:56     Titel:
  Antworten mit Zitat      
Habe mal eine einfacherere Variante gebaut, vielleicht hilft das ja beim Verständnis ein wenig:

Code:

clear all, clc

    x = [0 10 10 20 20 30 30 40 40 50 50 60 60 70 70 80 80 90 90 100 100 110 110 120 120 130 130 140 140 150 150 160 160 170 170 180 180 190 190 200 200 210 210 220 220 230 230 240 240 250 250 260 260 270 270 280 280 290 290 300 300 310 310 320];
    y = [2100 2100 2800 2800 3500 3500 4200 4200 5000 5000 0 0 700 700 1400 1400 2100 2100 2800 2800 3500 3500 4200 4200 5000 5000 0 0 700 700 1400 1400 2100 2100 2800 2800 3500 3500 4200 4200 5000 5000 0 0 700 700 1400 1400 2100 2100 2800 2800 3500 3500 4200 4200 5000 5000 0 0 700 700 1400 1400];
    plot (x,y);

n = 0;

for k = 1:length(x)     %Durchlaufen aller Punkte
    if y(k)>4800 && y(k)<5100
        n=n+1;
        z(n) = y(k);
        xx(n)= x(k);
    end
   
   if y(k)<300
        n=n+1;
        z(n) = y(k);
        xx(n)= x(k);
    end    
end

figure(2)
plot (xx,z);
 


Dafür habe ich mir eine Treppe nachgebaut, die über die Vektoren x und y definiert ist. In der for-Schleife wird jede Zeile von x und y durchlaufen. Die if-schleifen schreiben dann die Werte des Vektors neu, wenn die Bedingung erfüllt ist.

Ich bekomme es nun nicht hin, dass der Plot erst bei z.B. 5000 anfängt zu zeichnen. Wie kann ich das realisieren? Also die ersten Stufen sollen nicht berücksichtigt werden.
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.