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

FFT Interpretation der y-Achse

 

funky_Phil
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 05.01.17
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 11.02.2017, 16:03     Titel: FFT Interpretation der y-Achse
  Antworten mit Zitat      
Hi,
ich werte gerade ein Atemsignal (ca.0,2-2Hz) aus, dass ein 50Hz rauschen enthält.

Siehe Anhang. Atemsignal/Frequenzsepktrum

Die Frage ist: Warum ist in meinen Spektrum die Amplitude meines Rauschsignal fast so hoch wie mein Atemsignal? Wobei doch die Amplitude von meinem Rauschsiganl nur ein kleiner Bruchteil ist.

Hab ich eventuell was falsch programiert?
Oder ist die Höhe des Rauschsignals in der FFT Frequenzabhängig?

Vielen Dank!

Code:


clc
close all
clear all

load('Proband_Bauchatmung_Gefiltert_oSH_CH3_27_07_2016_16_13_48_0000');
   signal = RawData(2,:); % Rohsignal
N = length(signal); % Länge des Signals
fs = 256; % 256 Sampelrate
fnyquist = fs/2; %Nyquist Frequenz


l=length(signal);




%% Einseitiges Amplitudenspektrum mit der Frequenzachse in Hertz
% Jede bin-Frequenz ist  aufgeteilt durch fs/N Hertz
figure(1)
X_mags = abs(fft(signal))/(2*l); % Amplitude durch die Länge des Signals gibt die Amplitudenachse in den "Einheiten"
bin_vals = [0 : N-1];
fax_Hz = bin_vals*fs/N;
N_2 = ceil(N/2);
stem(fax_Hz(1:N_2), X_mags(1:N_2),'.')
xlabel('Frequenz / Hz')
title('Einseitiges Amplituden Spektrum');
axis tight
ylabel('Amplitude / µV');



 


rohsignal.jpg
 Beschreibung:

Download
 Dateiname:  rohsignal.jpg
 Dateigröße:  434.01 KB
 Heruntergeladen:  550 mal
Sepktrum.jpg
 Beschreibung:

Download
 Dateiname:  Sepktrum.jpg
 Dateigröße:  29.15 KB
 Heruntergeladen:  564 mal
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



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

schau dir mal folgendes Beispiel an: >>hier<<

Ich empfehle dir auf jeden Fall eine Skalierung der Y-Achse in dB (20*log10(Amplitudengang)). Damit sollten die Unterschiede deutlicher werden. Außerdem stimmt die Skalierung der Amplitude bei dir nicht.

Code:

N = length(y); % Anzahl Messwerte

% Berechnung der FFT
% ------------------
H = fft(y, N);
% Berechnung des Amplitudengangs aus dem komplexen Frequenzvektor H:
amplH = abs(H);

% Darstellung des interessierenden Frequenzbereichs des
% Amplitudengangs (0...fn) und
% daran angepasste Amplitudenskalierung (Normierung auf N/2):
amplitudengang = [amplH(1)/N amplH(2:N/2)/(N/2)]; % DC-Bin auf N normieren!
 


Bei realen Daten empfehle ich auch immer eine Fensterfunktion zu verwenden.

Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen
 
funky_Phil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 05.01.17
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 12.02.2017, 21:40     Titel:
  Antworten mit Zitat      
Danke!
Aber eine Sache ist mir nicht ganz klar, die du schreibst.

Code:
% Darstellung des interessierenden Frequenzbereichs des
% Amplitudengangs (0...fn) und
% daran angepasste Amplitudenskalierung (Normierung auf N/2):
amplitudengang = [amplH(1)/N amplH(2:N/2)/(N/2)]; % DC-Bin auf N normieren!
 


Warum normiert man den ersten Wert auf N bzw. was bedeutet DC Bin auf N normieren?

Die Kurve kommt so natürlich richtig gut raus.

mit der loarithmisches Ausgabe meinst du das in etwa so:
Code:
plot(x_fa-fn, 20*log10(amplitudengang))


was ich damit berechnen will ist im Endeffekt das Signal-Rausch-Verhältnis SNR
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



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

DC = direct current = Gleichstrom, daher f0 = 0Hz. Es ist somit nichts anderes als ein Offset, um den dein Signal in y-Richtung verschoben ist. So fern die Amplitude von f0 > 0.

Der Gleichsignalanteil wie auch die Nyquistfrequenz kommen in dem Ergebnisvektor der fft Funktion nur einmal vor. Alle anderen Teile doppelt, bzw. konjugiert komplex. Die FFT Funktion in Matlab berechnet ein zweiseitiges Spektrum von -fa/2...0...+fa/2-df. Somit müssen Gleichsignalanteil wie auch die Nyquistfrequenz anders normiert werden. Die anderen Frequenzanteile werden bei einem einseitigen Spektrum mit 2 multipliziert, da ja die Signalenergie (Amplitude) durch das berechnete zweiseitige Spektrum aufgeteilt ist.

Du kannst auch hier im Forum mal nach der Funktion "fft_Betragsspektrum" suchen. Da solltest du eine Funktion von mir finden, mit der sich das einseitige Spektrum in linearer wie auch logarithmischer Skalierung darstellen lässt.

Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2017, 21:15     Titel:
  Antworten mit Zitat      
Und noch ein bisschen Offtopic, aber trotzdem zum Thema: falls Du Einfluss auf die Messtechnik hast, würde sich das Problem womöglich durch ein Filter zwischen Sensor und Messtechnik deutlich reduzieren lassen. Die Atemfrequenz wird ja immer sehr weit weg von 50Hz liegen. Wenn Du da alles über 10...20Hz wegfilterst, verlierst Du nix vom Nutzsignal, dafür hast Du das Gebrumme vom Stromnetz und sonstige Störsignale nicht mehr drauf.
Falls Du die Messtechnik selbst gebaut hast und ausschließen kannst, dass der Sensor die 50Hz einfängt: mehr Kapazität im Netzteil oder am besten gleich einen etwas höherwertigen DC/DC-Wandler verbauen und nicht an den Pufferkapazitäten an den ICs sparen...

Bringt natürlich alles nur was, wenn Du an der Messtechnik was ändern kannst...
Private Nachricht senden Benutzer-Profile anzeigen
 
funky_Phil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 05.01.17
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 13.02.2017, 21:21     Titel:
  Antworten mit Zitat      
sollte das sein...

Ich probiers mal.
Vielen Dank!

Damit ist das Top abgeschlossen.

FFT_betragsspektrum.m
 Beschreibung:

Download
 Dateiname:  FFT_betragsspektrum.m
 Dateigröße:  1.53 KB
 Heruntergeladen:  520 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
funky_Phil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 05.01.17
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 13.02.2017, 21:45     Titel:
  Antworten mit Zitat      
Epfi hat Folgendes geschrieben:
Und noch ein bisschen Offtopic, aber trotzdem zum Thema: falls Du Einfluss auf die Messtechnik hast, würde sich das Problem womöglich durch ein Filter zwischen Sensor und Messtechnik deutlich reduzieren lassen. Die Atemfrequenz wird ja immer sehr weit weg von 50Hz liegen. Wenn Du da alles über 10...20Hz wegfilterst, verlierst Du nix vom Nutzsignal, dafür hast Du das Gebrumme vom Stromnetz und sonstige Störsignale nicht mehr drauf.
Falls Du die Messtechnik selbst gebaut hast und ausschließen kannst, dass der Sensor die 50Hz einfängt: mehr Kapazität im Netzteil oder am besten gleich einen etwas höherwertigen DC/DC-Wandler verbauen und nicht an den Pufferkapazitäten an den ICs sparen...

Bringt natürlich alles nur was, wenn Du an der Messtechnik was ändern kannst...


Das habe ich schon alles programmiert.

Ich habe mittlerweile die Störung des Signals gefunden und versuche diese mit verschiedenen Abschirmungen zu minimieren.

Ich habe dazu mal ein neues Top gestartet:
http://www.gomatlab.de/viewtopic,p,172877.html#172877
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.