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

Peaks Filtern

 

Florre
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 28.02.13
Wohnort: ---
Version: R2009a, R2016b
     Beitrag Verfasst am: 04.03.2013, 14:26     Titel: Peaks Filtern
  Antworten mit Zitat      
Hallo,
hab mal eine Frage....

Ich hab ein Signal das ich auswerten will/muss...

Mein Signal
besteht aus Zeit und Sekundaerstrom

Also ich hab schon einen Code der das alles Einliest und bearbeitet..(in der Datei ist mehr drin hab ich mal rausgelöscht weil für meine Frage nicht relevant)
Jetzt möchte ich gerne von meinem Strom die Peaks finden und den Abstand (Zeit) Auslesen und speichern.
mein Prob ist ich weiß nicht so recht wie ich anfangen soll...
kann mir da jemand Helfen und einen Tip geben.

Da es nicht nur die eine Datei ist sondern mehrere sollte es nicht nur stark auf diese Datei beschränkt sein.

Lg Florre

Messung.txt
 Beschreibung:

Download
 Dateiname:  Messung.txt
 Dateigröße:  2.29 MB
 Heruntergeladen:  637 mal
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 04.03.2013, 14:33     Titel: Re: Peaks Filtern
  Antworten mit Zitat      
Hallo Florre,

Florre hat Folgendes geschrieben:
Also ich hab schon einen Code der das alles Einliest und bearbeitet..

Wenn du den Code postest, kann dir schneller geholfen werden.

Grüße

Zuletzt bearbeitet von Seban am 04.03.2013, 14:43, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 04.03.2013, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

es gibt "Bordmittel" für die Identifizierung von Peaks. Falls du die entsprechenden Toolboxen nicht hast, schaue bei File Exchange nach.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Florre
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 28.02.13
Wohnort: ---
Version: R2009a, R2016b
     Beitrag Verfasst am: 04.03.2013, 14:46     Titel:
  Antworten mit Zitat      
Hallo MaFam,

Also ich hab vorher schon sowas gefunden aber versteh nicht ganz was da passiert...
Weiß nicht Ich finde das bringt mich nicht weiter...
Ich hab leider keine Toolbox..
Wollt schon gerne Verstehen was da passiert....
Ich kanns ja noch mal versuchen...

Hallo Seban,

Ich kann dir meinen Code gerne Posten nur hat das nicht viel mit den Peaks zu tun.. dann passt die Datei auch nicht ganz..... Ich poste einfach mal
Code:
format('long');                                                            

link='C:\Benutzer\Florre\Desktop\Strömung\Test\hu';                          

dateien=uigetdir('',link);                                                  
cd(dateien);                                                                
[stat,Text]=fileattrib('*.txt');                                            %Die Attribute der Dateien Auslesen die meisten sind Sinnlos und leer
names={Text.Name};                                                          %Die Namen der Dateien in eine "Tabelle" speichern wichtig für die Auswertung

x=1;                                                                        %Laufparameter für nachfolgende Schleife
while(1)
       File=names{x};                                                       %Dateien einzeln nehmen
    comma2point(File)                                                       %extra Funktion aus dem I-net gefischt und verändert Ersetzt die Kommas durch Punkte MATLAB braucht Punkte
    Einlesen=dlmread(File,'\t',8,0);                                        %Da die Dateien Einen Text Kopf und auch die Spalten Text enthalten und MATLAB nicht viel damit anfagen kann werden sie Rausgefilter (Nicht eingelesen)
    Einlesen(:,4)=Einlesen(:,4).*1000;
    Einlesen(:,6)=Einlesen(:,2).*Einlesen(:,3);                            
    Einlesen(:,7)=Einlesen(:,4).*Einlesen(:,5);                            
   
 
   
 
    S1=zeros(1,(size(Einlesen,1))-1);                                                                
   
   for y = 2:(size(Einlesen,1))-1
       S1(y)=(Einlesen(y,1)-Einlesen(y-1,1))*((Einlesen(y-1,6)+Einlesen(y,6))/2);  
    end
 
     Sa=zeros(1,size(Einlesen,1));                                                                
     
  for g=2:length(S1)
       Sa(g)=Sa(g-1)+S1(g);
  end
   Sa(g+1)=Sa(g);
   
   
    S2=zeros(1,(size(Einlesen,1))-1);

    for y = 2:(size(Einlesen,1))-1
        S2(y)=(Einlesen(y,1)-Einlesen(y-1,1))*((Einlesen(y-1,7)+Einlesen(y,7))/2);
    end
   
    Sb=zeros(1,size(Einlesen,1));
   
   for g=2:length(S2)
       Sb(g)=Sb(g-1)+S2(g);
   end
   Sb(g+1)=Sb(g);
       
   
         M=Sb./Sa;                                                          
    Einlesen(:,8)=Sa';
    Einlesen(:,9)=Sb';
    Einlesen(:,10)=M';                                                      
    nummerbild=sprintf('%s%s',names{x},'_neu.txt');
 
    fid=fopen(nummerbild,'wt');
    fprintf(fid,'%s\t','Time','Primaerspannung','Primaerstrom','Sekundaerspannung', ...
        'Sekundaerstrom','Primaerleistung','Sekundaerleistung','Primaerenergie','Sekundaerenergie','Wirkungsgrad');
     fprintf(fid,'\n');
     fprintf(fid,'%s\t','s','V','A','V','A','W','W','Ws','Ws','%');
     fprintf(fid,'\n');
     %fprintf(fid,'%20.18f\n',Einlesen);
    fclose(fid);

    dlmwrite(nummerbild,Einlesen,'delimiter', '\t','-append');                
    point2comma(nummerbild)
            x=x+1;
  if (x>length(names)) ,break,end
end


Ich Poste mal noch eine "komplette" Datei hoffe sie ist nicht zu groß...

LG Florre

Messung1.txt
 Beschreibung:

Download
 Dateiname:  Messung1.txt
 Dateigröße:  5.88 MB
 Heruntergeladen:  520 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 04.03.2013, 15:42     Titel:
  Antworten mit Zitat      
Ich weiß nicht so recht, worum es dir geht. Möchtest du die fertigen Funkionen nicht einfach anwenden und zuvor verstehen, wie eine Peak-Detection funktioniert?
Private Nachricht senden Benutzer-Profile anzeigen
 
Florre
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 28.02.13
Wohnort: ---
Version: R2009a, R2016b
     Beitrag Verfasst am: 04.03.2013, 15:51     Titel:
  Antworten mit Zitat      
Hallo,

Ich hab jetzt mir eines Aus dem I-net gesucht...
Es funktioniert auch...

Naja also mein Problem ist einfach ich muss mehrere Dateien auswerten.
Den hab ich im Internet gefunden.
Code:

function [maxtab, mintab]=peakdet(v, delta, x)
%PEAKDET Detect peaks in a vector
%        [MAXTAB, MINTAB] = PEAKDET(V, DELTA) finds the local
%        maxima and minima ("peaks") in the vector V.
%        MAXTAB and MINTAB consists of two columns. Column 1
%        contains indices in V, and column 2 the found values.
%      
%        With [MAXTAB, MINTAB] = PEAKDET(V, DELTA, X) the indices
%        in MAXTAB and MINTAB are replaced with the corresponding
%        X-values.
%
%        A point is considered a maximum peak if it has the maximal
%        value, and was preceded (to the left) by a value lower by
%        DELTA.

% Eli Billauer, 3.4.05 (Explicitly not copyrighted).
% This function is released to the public domain; Any use is allowed.

maxtab = [];
mintab = [];

v = v(:); % Just in case this wasn't a proper vector

if nargin < 3
  x = (1:length(v))';
else
  x = x(:);
  if length(v)~= length(x)
    error('Input vectors v and x must have same length');
  end
end
 
if (length(delta(:)))>1
  error('Input argument DELTA must be a scalar');
end

if delta <= 0
  error('Input argument DELTA must be positive');
end

mn = Inf; mx = -Inf;
mnpos = NaN; mxpos = NaN;

lookformax = 1;

for i=1:length(v)
  this = v(i);
  if this > mx, mx = this; mxpos = x(i); end
  if this < mn, mn = this; mnpos = x(i); end
 
  if lookformax
    if this < mx-delta
      maxtab = [maxtab ; mxpos mx];
      mn = this; mnpos = x(i);
      lookformax = 0;
    end  
  else
    if this > mn+delta
      mintab = [mintab ; mnpos mn];
      mx = this; mxpos = x(i);
      lookformax = 1;
    end
  end
end
 

soweit so gut...
Ich gebe mein V an und mein X kein Problem.
Jetzt ist die Sache ich muss ein Delta angeben...
Das ist aber recht schwierig wenn ich mehrere Dateien hintereinnader bearbeite. den Denen das Delta jetzt nicht unbedingt immer gleich ist.
Es ist so. Ich mache in meiner Messung Bilder und Stromverläufe.
Jetzt Weiß ich von den Bildern das dort Funken sind.
Diese kann ich auch in den Stromverläufen sehen.
Es kann halt passieren wenn ich ein zu kleines Delta angebe das Matlab mir zuviele "Peaks" ausgibt.
Wenn das Delta zu groß ist können zu wenige "Peaks" raus kommen oder es haut bei 2 von 3 Dateien hin...
wenn ich glück hab haut es bei allen hin das weiß ich abert leider nicht und Ich will nicht nur hoffen...

LG Florre
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 04.03.2013, 16:01     Titel:
  Antworten mit Zitat      
Du hast also unterschiedliche Dateien. Sind das äquivalente Messreihen, oder liegen andere Voraussetzungen zugrunde?
Private Nachricht senden Benutzer-Profile anzeigen
 
Florre
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 28.02.13
Wohnort: ---
Version: R2009a, R2016b
     Beitrag Verfasst am: 04.03.2013, 16:15     Titel:
  Antworten mit Zitat      
Ich hab verschiedene Vorraussetzungen.

Eine Entscheidende ist das mein Primärstrom unterschiedlich ist oder auch meine Primärspannung. Daraus ergeben sich auch unterschiedliche Sekundärströme und Spannungen..
Es sind auch so generell unterschiede vorhanden teilweise im Aufbau aber auch in der Durchführung.
Die Dateien sehen alle ähnlich aus aber die Stromstärke ist halt überall anders...


LG Florre
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 04.03.2013, 16:38     Titel:
  Antworten mit Zitat      
Ich würde diese Variante mit Standardwerten probieren: http://www.mathworks.com/matlabcent.....nder/content/peakfinder.m

Rufe also einfach peakfinder(data) auf. Die Standardwerte werden intern relativ(!) berechnet.
Private Nachricht senden Benutzer-Profile anzeigen
 
Florre
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 28.02.13
Wohnort: ---
Version: R2009a, R2016b
     Beitrag Verfasst am: 04.03.2013, 16:54     Titel:
  Antworten mit Zitat      
Danke für den Tip ich werd mal weiter Suchen noch haut das nicht ganz hin.. muss mal meine Probe Datei überprüfen, bin mir gerade nicht sicher ob da nicht nen Fehler drinn ist danke aber schon mal..

LG Florre
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 04.03.2013, 16:58     Titel:
  Antworten mit Zitat      
Was genau haut denn nicht hin? Ohne eine Quantifizierung dieser Aussage kann man dir nur schwer helfen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Florre
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 28.02.13
Wohnort: ---
Version: R2009a, R2016b
     Beitrag Verfasst am: 05.03.2013, 09:01     Titel:
  Antworten mit Zitat      
Hallo MaFam,
Sorry das ich mich erst jetzt wieder melde..

So mit dem Hinhauen ist so ich hab auch Videos..
Nun hab ich halt bei meiner "beispiel" Messung einen kleinen Unter schied zwischen Peak und Video gehabt..
Das war mein Prob. hab mal mehrere Videos und die Dazu gehörigen Messdateien ausgewertet und ich hab bei allen einen kleinen Unterschied... Da der bei allen gleich ist denke ich liegt das an meinem Messaufbau...
http://ediacaran.mech.northwestern......Lab_Code_to_detect_Spikes
Das hab ich mal gefunden Hab da den SpikeFinder genommen der Liefert mir gute Werte..
Der Link von dir ist auch gut liefert mir aber leider auch einen Peak zu viel.
Werd das noch ein wenig überprüfen müssen aber sieht doch ganz gut aus (wenn ich meine Verschiebung berücksichtige)
Danke für den Tip...

LF Florre
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 05.03.2013, 09:38     Titel:
  Antworten mit Zitat      
Ich persönlich bevorzuge diesen Algorithmus http://www.tcs-trddc.com/trddc_webs.....Palshikar_SAPDTS_2009.pdf in Verbindung mit Signifikanzfunktion S_1. Das ganze lässt sich hervorragend parametrisieren.
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.