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

Trimmen von Daten

 

zm09
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.05.2022, 13:44     Titel: Trimmen von Daten
  Antworten mit Zitat      
Hallo,

ich habe 2 Matrizen mit jeweils 2500x1 Werten. Diese Werte machen ab einen gewissen Punkt einen Sprung und am ende wieder das gleiche. Ich soll jetzt diesen Sprung mithilfe einer Funktion/Schleife etc. finden und Trimmen.

Ich hab bereits ein wenig an der Schleife fürs Trimmen gebastelt, jedoch suche ich mir hier den Sprung manuell raus - Das sollte aber nicht so sein. Am ende sollen beide Matrizen wieder die gleiche Größe haben.

Die 2 Daten habe ich angehängt.

Ich hoffe mir kann hier jemand weiterhelfen.

Gruß

Code:
% Initialisiere Zwischenspeicherungs-Vektor mit einer Null

ZwischenVektor(1) = 0;

% Durchlaufen in einer Schleife und alle Werte <2 wegschneiden
% anders gesagt: wenn die Zahl kleiner 2 ist, übernehmen wir
% sie in den Zwischenspeicher, erste Zeile wird weggeschnitten und in neuen Vektor gespeichert
% und der Zwischenspeicher gelöscht

for ElementNr = 1:length(amplify_in)
   if amplify_in(ElementNr) > 2
      ZwischenVektor(end+1) = amplify_in(ElementNr);
   end
end



data_in_cut = ZwischenVektor(2:end);
clear ZwischenVektor ElementNr;

% plot(data_in_cut)


%%  for amplify_out



ZwischenVektor2(1) = 0;



for ElementNr2 = 1:length(amplify_out)
   if (amplify_out(ElementNr2)>=0.1 && amplify_out(ElementNr2) <=1)
      ZwischenVektor2(end+1) = amplify_out(ElementNr2);
   end
end

data_out_cut = ZwischenVektor2(2:end);
clear ZwischenVektor2 ElementNr2;


Daten.zip
 Beschreibung:

Download
 Dateiname:  Daten.zip
 Dateigröße:  36.52 KB
 Heruntergeladen:  228 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.05.2022, 16:22     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
jedoch suche ich mir hier den Sprung manuell raus

Damit meinst du, dass du die Bedingung anhand des Graphen festlegst?

Zitat:
Am ende sollen beide Matrizen wieder die gleiche Größe haben.

Wie soll das gehen, wenn etwas abgeschnitten wird?

Für mich sind die beiden Eingangsdaten recht unterschiedlich. Bei amplify_in sind zwei (eigentlich sogar drei) klare Sprünge zu erkennen. Bei amplify_out ist der relevante Anstieg für mich gar kein Sprung im eigentlichen Sinne, sondern eher ein fließender Übergang. Eine automatisierte Entscheidungsfindung ist da für mich nicht trivial.

Die Funktion ischange könnte helfen.
Code:
jumps = find(ischange(amplify_in));
data_in_cut = amplify_in(jumps(2):jumps(end)-1);

Ob immer jumps(2) eine gute Idee ist, müsstest du anhand mehrerer Datensätze schauen.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
zm09
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.05.2022, 16:33     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Hilfe, genau was ich gesucht habe - hat schon geklappt.

Ich hab mich vielleicht ein wenig schlecht ausgedruckt. Ich meinte nach dem cut müssen die beiden Matrizen gleich groß sein- was mit deiner Funktion auch geklappt hat.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.05.2022, 16:42     Titel:
  Antworten mit Zitat      
Hallo,

wenn der auszuschneidende Bereich bei beiden Matrizen gleich sein soll, würde ich mich am _in-Signal orientieren. Dort ist der Sprung viel klarer auszumachen.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
zm09
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2022, 08:17     Titel:
  Antworten mit Zitat      
Zitat:
wenn der auszuschneidende Bereich bei beiden Matrizen gleich sein soll, würde ich mich am _in-Signal orientieren. Dort ist der Sprung viel klarer auszumachen.
Wie meinst du das genau?

Ich hätte noch eine Frage zu diesem Thema. Ich soll am ende aus den 2 Matrizen ein data_t_cut machen, um am ende die finalen daten mit noch 2 anderen Matrizen(die habe ich schon erstellt) abzuspeichern. Bin mir da aber nicht sicher, was genau gemeint ist, kannst du mir hier weiterhelfen?

Also es soll am ende eine nx3 Matrix werden.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.05.2022, 08:29     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wie meinst du das genau?

Welcher Teil ist denn nicht klar?

Generell kann man mit der Syntax [a, b] zwei Vektoren oder Matrizen mit gleicher Zeilenanzahl nebeneinander schreiben. Wie nun aus den 2 hier diskutierten Spalten zusammen mit den 2 anderen Spalten insgesamt 3 Spalten werden sollen, kann ich auch nicht sagen, da 2 + 2 = 4.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
zm09
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2022, 08:50     Titel:
  Antworten mit Zitat      
Hallo,

ich hab mich bei der Angabe vertan. Das data_t_cut ist die Zeit wann die Daten gemessen wurden.
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 - 2024 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.