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

Datenauswertung , Hochpassfilter

 

wollfoer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2016, 17:23     Titel: Datenauswertung , Hochpassfilter
  Antworten mit Zitat      
Hi,

ich habe momentan ein Problem, was für die meisten hier wahrscheinlich extrem einfach ist... ^^

Es geht um Datenauswertung.

Die Werte kommen aus dem Datenlogger, und ich habe ein Excel Makro geschrieben, welche mir diese in 3 Spalten anordnet (Zaehler,Zeit,Weg). Diese Lese ich in Matlab aus. (Geht wahrscheinlich auch in Matlab - aber wie gesagt: ich habe keine Ahnung. )

In Excel sieht das ganze so aus: (siehe Bild )

Was mich eigentlich interessiert ist die hochfrequente Funktion (hier 100Hz). Ich möchte, dass sie Konstant um die x-Achse schwingt und nicht mit der niederfrequenzen Schwingung "abdriftet".

Eigentlich müsste man hier wohl nur einen Hochpassfilter anwenden, doch ich habe von Matlab überhaupt garkeine Ahnung. Ich will die cutoff-Frequenz bei 10Hz ansetzen. Die Sachen die ich im Netz finde, helfen mir nur bedingt weiter.....

Mein bisheriger Lösungsansatz: de.mathworks.com/help/signal/ref/butter.html#outputarg_ba

Doch welche Parameter sind [z,p,k]??

Das ganze ist Teil eines größeren Problems - ich bin also zwingend darauf angewiesen, es am Ende wirklich zu verstehen Smile

Bisher sieht mein code so aus:

Code:


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Skript zur Datenauswertung
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%cProgrammstart
    clc;
    clear all;
    disp('Berechne...'); %Bildschirmausgabe für die Dauer der Berechnung,
                         %bis zur Ausgabe der Ergebnisse
                         
                         
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %Einlesen des Werte
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%Pfad zur Excel-Datei
 
filename = 'xyz';
sheet = 'abc';
xlRange = 'A:C';
EXCEL_Data = xlsread(filename,sheet,xlRange);

%Verarbeiten der Werte
Zaehler = EXCEL_Data(:,1); %numerisch, Anzahl der Messwerte
Zeit    = EXCEL_Data(:,2); %in ms
Weg     = EXCEL_Data(:,3); %in m

%Ausgeben der Werte
disp('Excel Daten :');
disp(EXCEL_Data);

n = 8;      %order of the highpass
Wn = 0.1;    %cutoff-frequency

[z,p,k] = butter(n,Wn,'high');
...???

 


Beispiel_1.PNG
 Beschreibung:
Beispielbild

Download
 Dateiname:  Beispiel_1.PNG
 Dateigröße:  41.41 KB
 Heruntergeladen:  382 mal


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.04.2016, 18:11     Titel:
  Antworten mit Zitat      
Hallo,

z, p und k sind die Null-, Polstellen und Verstärkung des Filters. Nutze besser die Koeffizenzen a und b.

Code:

fs = ... % Abtastfreq. in Hz
[b,a] = butter(n,10/(fs*0.5),'high'); % Wn = Cutoff Freq. / Abtastfreq./2

% Signal mit Hochpass filtern
% einfache Filterung
gefilteres_Signal = filter(b,a,Signal);

% doppelte Filterung, beseitigt das Filter delay (Verschiebung des Signals)
gefilteres_Signal = filtfilt(b,a,Signal);
 


Ein clear all ist i.d.R. unnötig. Ein einfaches clear reicht vollkommen.

Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen
 
wollfoerst_k

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 09:21     Titel:
  Antworten mit Zitat      
Vielen Dank erstmal für die Antwort Smile

Ich habe jetzt allerdings noch nicht verstanden, wie ich das mit meinen Werten zusammenbringe .. ?

Welche Variable ist "Signal"? Mein Weg?
 
wollfoerst_k

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 09:37     Titel:
  Antworten mit Zitat      
Der Code sieht bisher so aus:

Code:

%Ausgeben der Werte
disp('Excel Daten :');
disp(EXCEL_Data);


fs = 100; % Abtastfreq. in Hz
wm = 10;  % cutoff-frequency
[b,a] = butter(8,wm/(fs*0.5),'high');

% Signal mit Hochpass filtern
% einfache Filterung
Weg_Filter = filter(b,a,Weg);

% doppelte Filterung, beseitigt das Filter delay (Verschiebung des Signals)
Weg_Filter = filtfilt(b,a,Weg);

disp(Weg_Filter);

hold on;
plot(Zeit,Weg,'r-',Zeit,Weg_Filter,'b-');
grid on;
 


Das Problem ist allerdings, das er Weg_Filter nur als NaN ausgibt.

Vielleicht ist das Problem, dass er in den letzten 3 Zeilen der Matrix das gleiche stehen hat?

Unbenannt123.PNG
 Beschreibung:

Download
 Dateiname:  Unbenannt123.PNG
 Dateigröße:  22.57 KB
 Heruntergeladen:  391 mal
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 20.04.2016, 21:15     Titel:
  Antworten mit Zitat      
Hallo,

wenn in dem Weg-Vektor schon NaN enthalten sind, liefert filtfilt überall NaN im Ergebnisvektor. Die Funktion filter dagegen nur an den Stellen NaN, wo auch im Eingangsvektor NaN liegen.

Also musst du die NaN's vor dem Filtern beseitigen. Falls das nicht die Ursache ist, bitte ein reproduzierbares Beispiel posten (inkl. Datenvektor).

Gruß DSP
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.