Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Regelungstechnik 1

Fachkräfte:
weitere Angebote

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

A-Bewertungsfilter

 

DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 21.07.2011, 10:04     Titel:
  Antworten mit Zitat      
Kann es sein, dass du dein Akkustiksignal erstmal wieder in ein lineares Verhältnis ändern musst? Du hast das Signal ja in dB..wandel es mal um.

Jetzt transformierst du das Signal mit linearem Verhältnis und führst die Filterung durch.
Private Nachricht senden Benutzer-Profile anzeigen


Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 10:19     Titel:
  Antworten mit Zitat      
Kannst du das vielleicht etwas genauer erklären? Ich weiß gerade nicht was du mit lineares Verhältnis und wandeln meinst.
Ich bin ja schon von [Pa] in [dB] gegangen.
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: 21.07.2011, 10:27     Titel:
  Antworten mit Zitat      
[Pa] ist deine Einheit und dB lediglich ein Faktor...logarithmische Darstellung Wink

Schau dir mal diese Seite an...da findest du die Umrechnung

http://www.sengpielaudio.com/Rechner-db.htm
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 10:37     Titel:
  Antworten mit Zitat      
Ja für meine Arbeit eine der hilfreichsten Seiten die ich bisher gefunden habe. Da habe ich die Rechnung hergenommen um vom Schalldruck auf den Schalldruckpegel zu kommen.
Soll ich also:

1. zurück zum Schalldruck
2. Spektrum berechnen
3. Filterung vornehmen
4. ifft
5. Umwandlung in Schalldruckpegel

Ich finde, dass das eine ziemlich umständliche Umrechnung ist und ich glaube dabei werden mir wieder die niedrigeren Frequenzen wegfallen aber ich werde es antesten!
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 11:03     Titel:
  Antworten mit Zitat      
Also das ändert nichts an meinem Problem!

Mit dem Code hab ich das jetzt betrachtet!

Code:


%   .txt-Datei in Matlab einlesen ( Matrixform )
 
rohdaten1=dlmread('01_white_20kmh_1\23.txt', '\t', 23, 0);
 
%   Aufteilen in Zeit- u. Wertevektor
 
time1=rohdaten1(:,1);
soundpressurelevel1=(rohdaten1(:,2))';
 
%   Plotten der Rohdaten
 
a = figure ('Name','Rohdaten Fahrt 1 im Vergleich','NumberTitle','off');
    subplot ( 4,1,1 ) ;
        plot ( time1 , soundpressurelevel1 , 'r' );
        xlabel ( 'Zeit [s]' ) ; ylabel ( 'Schalldruck [Pa]' ) ; title( 'Rohsignal' ) ;
        grid on ; hold on ;
       
    subplot(414);
        plot ( time1 , soundpressurelevel1 , 'r' ) ;
        grid on ; hold on ;
       
%   FFT für Fahrt 1 mit Plot
 
t11=time1;
x11=soundpressurelevel1';
 
T11=diff(t11(1:2));
fs11=1/T11;
N11=length(x11);
 
 
H11=fft(x11);
H11=abs(H11/N11);
 
f11=(0:length(H11)-1)./length(H11)*fs11;
 
b=figure('Name','FFT der 1. Fahrt','NumberTitle','off');
    subplot(3,1,1);
        plot(f11,H11,'r');                  
        xlabel('Frequenz[Hz]'); title('Rohdaten Spektrum');
        grid on; hold on;
       
    subplot(3,1,3);
        plot(f11,H11,'r');
        grid on; hold on;
       
%   Direkte A-Bewertung der 1. Fahrt
 
f=f11;
 
Ra=(12200^2.*f.^4)./((f.^2+20.6^2).*(f.^2+12200^2).*sqrt(f.^2+107.7^2).*sqrt(f.^2+737.9^2));
 
soundpressurelevel1A=soundpressurelevel1.*Ra;
 
figure(a);
    subplot(4,1,2);
        plot(time1,soundpressurelevel1A,'b');
        xlabel('Zeit [s]'); ylabel('Schalldruck [PA]'); title('Rohsignal direkt A-Bewertet');
        grid on; hold on;
       
    subplot(4,1,4);
        plot(time1,soundpressurelevel1A,'b');
        grid on; hold on;
       
%   A-Bewertung im Frequenzbereich
 
Ra=((12200^2.*f.^4)./((f.^2+20.6^2).*(f.^2+12200^2).*sqrt(f.^2+107.7^2).*sqrt(f.^2+737.9^2)))';
 
H11A=H11.*Ra;
 
figure(b);
    subplot(3,1,2);
        plot(f11,H11A,'b');
        xlabel('Frequenz [Hz]'); title('Rohdaten Spektrum A-Bewertet');
        grid on; hold on;
       
    subplot(3,1,3);
        plot(f11,H11A,'b');
        xlabel('Frequenz [Hz]'); title('Vergleich der Spektren');
        grid on, hold on,
        legend('Spektrum','Spektrum A-Bewertet',0);
       
%   Inverse der bewerteten Frequenzen
 
soundpressurelevel1a=ifft(H11A);
 
figure(a);
 
    subplot(4,1,3);
        plot(time1,soundpressurelevel1a,'k');
        xlabel('Zeit [s]'); ylabel('Schalldruck [Pa]'); title('Rohsignal aus Spektrum mit A-Bewertung');
        grid on; hold on;
       
    subplot(4,1,4);
        plot(time1,soundpressurelevel1a,'k');
        xlabel('Zeit [s]'); ylabel('Schalldruck [Pa]'); title('Vergleich der Signale');
        grid on; hold on;
        z=legend('Rohdaten','Rohdaten A-Bewertet','Rohdaten A-Bewertet aus Spektrum',1);

 


Ich kann auch keinen Fehler feststellen. Hab die Umwandlung in dB jetzt erstmal völlig ausgelassen, da der Fehler schon vorher da ist!
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: 21.07.2011, 11:05     Titel:
  Antworten mit Zitat      
Das war nur eine Idee, da du ja beschrieben hast, dass nach der Filterung nur noch ganz kleine Pegel vorliegen. Die Umwandlung kann aber auch falsch sein...

Ich habe sowas selbst noch nie gemacht, weiß somit auch nicht, was rauskommen soll Wink Evtl. sind die kleinen Pegel bei deinem gegebenen Signal ja auch richtig. Was heiß denn bei dir auch klein? Hast du nicht ein Bsp zum Vergleichen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 11:10     Titel:
  Antworten mit Zitat      
Ne leider nicht.

Aber ich hab mal den Plot angehangen wo du sehen kannst was ich mit klein meine!

untitled.jpg
 Beschreibung:
Der mittlere Plot ist der, der im Spektralbereich die Filter bekommen hat!

Download
 Dateiname:  untitled.jpg
 Dateigröße:  122.52 KB
 Heruntergeladen:  515 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: 21.07.2011, 11:31     Titel:
  Antworten mit Zitat      
Hier sind schon mal zwei Fehler...

Code:

H11=abs(H11/N11); % Skalierung
   
 f11=(0:length(H11)-1)./length(H11)*fs11; % falscher Freq.vektor
 


1. Wenn du die Amplitude hier skalierst, musst du das auch bei der ifft beachten. Lass sie für die Filterung weg und benutze das nur für den Plot.

2. Die FFT() liefert dir ein Amplitudenspektrum von -fs11/2...+fs11/2. Du rechnest Ra aber nur für positive Frequenzen aus, und multiplizierst dann mit dem Amplitudenspektrum, was auch den negativen Teil enthält. Das kann doch nicht gehen.


Code:

H11_pos0 = 2*abs(H11(1:(N/2)+1)); % Amplitudenspektrum von 0...+fs11/2
f11=(0:fs11:(length(H11_pos0)-1)*fs11); % f = 0...+fs11/2

H11_pos .* Ra(f11)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 12:36     Titel:
  Antworten mit Zitat      
Also da kann aber auch was nicht stimmen. Die Frequenzen gehen dann ja bis 2,5*10^9 da scheint die Rechnung doch auch nen kleinen Fehler zu haben oder nicht. Ich kann doch bei einer Frequenz von 16000Hz nur bis 8000Hz die FFT machen und dann wird quasi gespiegelt!
Oder muss ich jetzt wirklich nochmal von 0 bei der FFt anfangen?
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: 21.07.2011, 13:35     Titel:
  Antworten mit Zitat      
Sorry...ich habe hier nicht die halbe Abtastfreq. eingesetzt

Code:

f11=(0:fs11:(length(H11_pos0)-1)*(fs11/2)); % f = 0...+fs11/2
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 14:14     Titel:
  Antworten mit Zitat      
Wofür benötigt man denn die Schrittweite fs11? Ohne läufts sonst mäckert Matlab wegen Matrix dimensions.


Musst dich nicht entschuldigen. Bin froh das mir jemand hilft!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 14:18     Titel:
  Antworten mit Zitat      
Edit:

Ändert aber auch nichts an dem bewerteten Spektrum. liegt immer noch wie auf dem Bild gegen 0!
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: 21.07.2011, 14:41     Titel:
  Antworten mit Zitat      
Das war auch immer noch falsch Embarassed ...so ist das halt, wenn man mal schnell nebenbei antwortet und mit den Gedanken bei was ganz anderem ist. Ich sollte es besser wissen...in so fern kann ich mich schon entschuldigen, wenn ich falsche Antworten gebe auf Grund von mangelnder Konzentration.

So ist es jetzt aber richtig:

Code:

% das hast du schon...
T11=diff(t11(1:2));
fs11=1/T11;
N11=length(x11);

fn = 0.5 * fs11; % Nyquistfreq. = halbe Abtastfreq.
df = fs11/N11; % Schrittweite/Auflösung des FFT Spektrums

f = 0:df:fn; % Freq.vektor 0...fn
 


Allerdings tritt jetzt noch ein Problem auf. Du berechnest ja den Betrag (abs...), hast also Polarkoordinaten. Die ifft() braucht aber karthesische Koordinaten, also Real- und Imaginärteil. Da du ja keine Phase des Filters hast, bin mir jetzt nicht sicher ob die Rücktransformation überhaupt so geht. Da muss ich erstmal drüber nachdenken...
Private Nachricht senden Benutzer-Profile anzeigen
 
Atmos_kk
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 23.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 15:10     Titel:
  Antworten mit Zitat      
Naja also funktionieren tut das schon allerdings bin ich mittlerweile so durcheinander, dass ich nichts mehr verstehe. Meine FFT hat vorher ja auch funktioniert und im Grunde kamen die selben Werte raus.

Ich glaube, dass mit der A-Filterung auch irgendwas nicht stimmt. Es kann ja nicht ganz richtig sein, dass alle Frequenzen so extrem wegfallen.

Ich werde es erstmal für heute auf sich beruhen lassen und bei ein paar Firmen anfragen, wie die das machen.

Ich dank dir fürs Erste und ich werde mal meine Ergebnisse berichten wenn ich da was herausbekommen sollte. Ich glaube fast, dass man das mit anderen Filtern realisiert oder man nur die Frequenzen berechnet und dann alles im Zeitbereich benutzt. Naja ich werde es posten vielleicht benötigt irgendjemand sowas mal!

Aber über die FFT werde ich nochmal grübeln. Anscheinend hab ich das doch nicht so verinnerlicht wie ich es gedacht habe!

Greetz
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: 21.07.2011, 18:12     Titel:
  Antworten mit Zitat      
Ich denke schon, dass die angegebene Gewichtsfunktion aus dem Link richtig ist. Es ist wohl aber nur zur Betrachtung im Frequenzbereich. Bist du dir denn sicher, dass du das Signal im Zeitbereich brauchst? Wenn es nur um Analyse geht, ist die Betrachtung im Frequenzbereich doch ohnehin besser, da der hörbare Bereich ja ebenfalls auf die Frequenz bezogen wird.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3, 4  Weiter

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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.