|
Autor |
Hochpassfilter mit Matlab |
|
wollfoerst_k
Neu  Dabei seit: 19.04.2016 Mitteilungen: 1
 | Themenstart: 2016-04-19
|
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:
http://www.matheplanet.com/matheplanet/nuke/html/uploads/a/45543_Beispiel_1.PNG
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. Die Sachen die ich im Netz finde, helfen mir nur bedingt weiter.....
Mein bisheriger Lösungsansatz: http://de.mathworks.com/help/signal/ref/butter.html#outputarg_ba
Doch welche Parameter sind [b,a]??
Das ganze ist Teil eines größeren Problems - ich bin also zwingend darauf angewiesen, es am Ende wirklich zu verstehen :)
Bisher sieht mein code so aus:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%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 = 9; %order of the highpass
Wn = 10; %cutoff-frequency
[b,a] = butter(n,Wn,'high')
|
Profil
| Folgende Antworten hat der Fragensteller vermutlich noch nicht gesehen. |
majoka
Senior  Dabei seit: 25.02.2014 Mitteilungen: 814
 | Beitrag No.1, eingetragen 2016-04-19
|
Hallo wollfoerst_k
willkommen im Forum.
Ich habe den "butter"-Befehl nicht verfügbar. Kann das ganze also nicht genau nachvollziehen. Aber der Beschreibung nach, solltest Du mit
\sourceon Matlab
y_filt = filter(b,a,Weg);
\sourceoff
den gefilterten Signalverlauf erhalten?
Gruß
majoka.
|
Profil
|
Krugman
Senior  Dabei seit: 23.05.2006 Mitteilungen: 355
Wohnort: Weil am Rhein
 | Beitrag No.2, eingetragen 2016-04-20
|
Hi,
aus welcher Fachrichtung kommst du? Sollst du später alles verstehen, da entsprechendes Fachwissen schon erlernt sein sollte?
Signalverarbeitung ist ein sehr komplexes Thema :D
Folgendes sollte man zumindest schon mal gehört haben:
- Shannon-Theorem (Nyquist Theorem)
- Abtastrate
- FFT und IFFT
- Z-Transformation (mit Denominator/Numerator)
- Direktform II transposition
- FIR Filter
- IIR Filter
- Filter allgemein (Hochpass, Lowpass, Butter, Cheby, usw)
- Second-Ordner Section (IIR Filter)
- Frequenz(en) die man eigentlich filtern möchte
usw.
Schlussendlich, wenn man grob weiß worum es geht und wenn man die Signalverarbeitung mittels Toolbox verwenden möchte:
\sourceon Matlab
% filter defines
Fs = ; % abtastrate
Fc1 = ; % cutoff freq Fc1
N = ; % filter Ordnung
FType = ; % filter type
% filter setup mit Signal processing toolbox
hh = fdesign.lowpass('n, fc1', N, Fc1, Fs); % filter Struktur erstellen
Hd = butter(hh); % filter erstellen mit lowpass Settings für typ butter
[b, a] = tf(Hd); % Transfer function berechnen
Hd = dfilt.df2t(b,a); % in die direct form II transponieren
fDataOutput = filter(Hd.Numerator, Hd.Denominator, fDataInput);
\sourceoff
Der Code ist nicht getestet und basiert auf Matlab 7.01.
In der Matlab-Hilfe findest du zu jeder Funktion auch mehr Informationen und auch Beispiele.
Zum spielen mit den Filter kannst du die Funktion 'fdatool' verwenden. Schlussendlich ist der obige Code aus dem FDAtool. Mittels diesem Tool kannst du deinen Filter generieren und anschließend sogar als Matlabcode exportieren.
Gruß
Krugman
|
Profil
|
wollfoerst_k wird per Mail über neue Antworten informiert. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|