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

signal filtern um Merkmale zu berechnen,selbe frage nochmal

 

gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2010, 18:53     Titel: signal filtern um Merkmale zu berechnen,selbe frage nochmal
  Antworten mit Zitat      
Hallo,

ich habe echt ein problem ,und zwar ich weiss gar nicht wie ich ein signal filtern kann,ich habe die frage bis jetzt 3 mal gestellt.
es geht um ein signalspektrum ,das man filtern muss ,um störtsignal zu beseitigen.
die spannungmesswerte,mit denen das orginal signal erstellt wurde ,wurden mit Labview ohne filter aufgenommen, und dann mit matlab eingelesen und es komm ein ungefiltertes signal wie auf dem bild im Anhang.
die Merkmale berechnet man aus dem FFT spektrum,auch im Anhang zu sehen.
aber im fft spektrum habe ich störsignale die ich beseitigen muss,und dachte an einem filter.
wie kann ich ein filter in meinem code benutzen,kennt sich jemanden aus mit filter und sowas?
das ist der code für fft spektrum ,und wenn meine frage nicht klar ist bitte fragen und vielen dank
Code:

% --- Spektrum darstellen
% wird ausgeführt nach Betätigung Button "Spektrum berechnen"
function fftstart_Callback(hObject, eventdata, handles)
global SPANNUNG SAMPLES ABTAST MESSUNGEN SPKTRM Signalbeginn Signalende spektrum
frequenz = 1/(ABTAST*0.001); %Frequenz
T = (Signalende-Signalbeginn+1)/frequenz; %Abtastperiodendauer
t = 0:1/frequenz:T; %Abtastzeitwerte in Matrix
t_diff = t(end)-t(1); %Zeitdifferenz
SPKTRM = [];

% Plot Spektrum
for n = (0:MESSUNGEN-1)
% Berechnung FFT
spektrum = fft(SPANNUNG(Signalbeginn+n*SAMPLES:Signalende+n*SAMPLES));
SPKTRM = [SPKTRM; spektrum];
% nur im positiven Bereich
spktrmabs = abs(spektrum);
% Gleichanteil und spiegelung entfernen
fspktrm = spktrmabs(2:ceil(length(spktrmabs)/2));
% Plot Spektrum
stem(handles.spektrum,...
     linspace(1/t_diff,length(fspktrm)/t_diff,length(fspktrm)),fspktrm,...
     'fill','MarkerSize',1,'Color', [0 0.7 0]);
hold on
end
hold off
xlabel(handles.spektrum,'Frequenz [Hz]')
 


fft spektrum.png
 Beschreibung:
und hier ist fft mit störsignale

Download
 Dateiname:  fft spektrum.png
 Dateigröße:  24.95 KB
 Heruntergeladen:  637 mal
original signal ohne filter.png
 Beschreibung:
hier wird original signal ohne filter dargestellt

Download
 Dateiname:  original signal ohne filter.png
 Dateigröße:  12.31 KB
 Heruntergeladen:  534 mal


aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 11.02.2010, 12:48     Titel:
  Antworten mit Zitat      
Hi,

Du könntest Deine Spannungswerte filtern mit Hilfe der Anwendung von
"butter" und "filter"

Da die Störung niederfrequenter ist als Dein Nutzsignal, wäre ein Bandstop oder Highpass-Filter zu nutzen.
Code:

[B,A]=butter(8,0.2,'high'); % Hochpassfilter: Das zweite Argument ist das Verhältnis aus Filterfrequenz zu halber Abtastfrequenz
[B,A]=butter(8,[0.1,0.2],'stop'); % Bandsperre
SPGfiltered=filter(B,A,SPANNUNG);
 


Eine weitere Möglichkeit wäre ein direkter Eingriff in die FFT.
Alle FFT-Werte, bei denen die Störung vorliegt, zu Null setzen und dann rücktransformieren. Vorsicht mit Skalierungswerten und aufpassen mit der Phase.

Grüße
_________________

Andreas Geißler
Private Nachricht senden Benutzer-Profile anzeigen
 
marshallprank
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 16.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2010, 12:55     Titel:
  Antworten mit Zitat      
Hi

Probier mal mit diesem Code. Ich hab ein wießes Rauschen generiert, und nur in einem bestimmten frequenzband dargestellt.

Code:

clear all
close all
clear all

% sampling rate
f_s = 25e9;
% sampling time
T_s = 1/f_s;
%number of cycles for histogram
N_cycle=512;

     
%% White Noise

      % center frequency
      f_0 = 5.12e9;
      % bandwidth
      B = 185e6; %10e6
     
        % generate noise
        noise = randn(1,2^10);
       
        % elliptic filter
        %order of filter
        order=6;
        %stopband attenuation [dB]
        Rs=80;
        %passband ripple [dB] (for chebyshev1 & elliptic)
        Rp=0.001;
       
        Wp = [2*(f_0-(B/2))/f_s 2*(f_0+(B/2))/f_s];
       
        %elliptic filter
        [noise_b,noise_a] = ellip(order,Rp,Rs,Wp);
       
        noise_h = impz(noise_b,noise_a);
       
        %plot(abs(fft(noise_h)))
       
        filtered_noise = conv(noise,noise_h);
       
         
         f=linspace(1,f_s,length(filtered_noise));
         plot(f,abs(fft(filtered_noise)))
         axis([0 f_s/2 0 1e2])
         grid
         title('band-limited noise')
         xlabel('frequency [Hz]')
         ylabel('amplitude')
Private Nachricht senden Benutzer-Profile anzeigen
 
gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2010, 16:39     Titel: signal filtern um Merkmale zu berechnen,selbe frage nochmal
  Antworten mit Zitat      
Hallo zusammen,

an aj.geissler.

mit dem folgenden code habe ich probiert spannungwerte zu filtern aber ,es ändert sich nichts .
[B,A]=butter(8,0.2,'high'); % Hochpassfilter: Das zweite Argument ist das Verhältnis aus Filterfrequenz zu halber Abtastfrequenz
[B,A]=butter(8,[0.1,0.2],'stop'); % Bandsperre
SPGfiltered=filter(B,A,SPANNUNG);
aber die andere möglichkeit mit Eingriff auf FFT verstehe nicht ganz.
was genau meinst du damit ?

an marshallprank.

mit deinem code ,habe ich auch probiert ,aber deine ganze angaben ,woher kommt das alles ,ich habe probiert ,aber igendwie liefert mir matlab kein fft spektrum und möchte gern wissen ,wie du auf diesen code benutzt hast?
viellen dank

grüsse
 
marshallprank
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 16.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2010, 19:16     Titel:
  Antworten mit Zitat      
Ich habe das weiße Rauschen in einem Band begrenzt. ich sollte die Einwirkung vom rauschen nur in einem bestimmten Frequenzband untersuchen,wo eingentlich mein Signal sich befindet.
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2010, 20:19     Titel: signal filtern um Merkmale zu berechnen,selbe frage nochmal
  Antworten mit Zitat      
Hallo,

in dein code hast du bandbreite und mittenfrequenz angegeben ,was ich gar nicht habe ,du machst sowas wie eine Glockenkurve ,das habe ich raus bekommen ,aber normalerweise ,wenn das rauschen begrenzt ist ,hat man andere ergebnisse ,was ich in dem fall nicht habe ,ich meine die ergbnisse nach dem filter ,sollen anderes aussehen.

die bandbreite und mittenfrequenz soll ich selber aus ffm spektrum berechnen ,hoffe hast du verstanden ,was ich meine?
vielen dank für deine hilfe
gruss
 
marshallprank
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 16.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2010, 22:59     Titel:
  Antworten mit Zitat      
ja ok ich verstehe was du meinst..
sorry ich kann aber weiter nicht helfen:-)
Grüße
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.