Program för att analysera frekvenser i ljudfiler?
Program för att analysera frekvenser i ljudfiler?
Leta efter något lämpligt program för att analysera ljudfiler.
Det jag är ute efter är vilka frekvenser som finns att hämta hur ljudströmmen, vilken magnitud osv.
Har aldrig kört med Matlab, annars kanske en FFT-analys där skulle vara att föredra?
Är det svårt att komma igång med Matlab för såna här ändamål? Finns det några bra tutorials på nätet?
Tacksam för alla tips!
Mvh
speakman
Det jag är ute efter är vilka frekvenser som finns att hämta hur ljudströmmen, vilken magnitud osv.
Har aldrig kört med Matlab, annars kanske en FFT-analys där skulle vara att föredra?
Är det svårt att komma igång med Matlab för såna här ändamål? Finns det några bra tutorials på nätet?
Tacksam för alla tips!
Mvh
speakman
Tack för erbjudandet. Ja, det är en wavfil, eller snarare en "raw"-fil som jag genererar i mitt egna program. Filen skulle i princip kunna se ut hur som helst.
Om du kan Matlab kanske du skulle vilja göra en grund för en FFT-analys som jag skulle kunna ha som referens?
Googlade runt lite, och det finns väldigt många tutorials för FFT i Matlab, men ett praktiskt exempel hade helt klart varit smidigt!
Mvh
speakman
Om du kan Matlab kanske du skulle vilja göra en grund för en FFT-analys som jag skulle kunna ha som referens?
Googlade runt lite, och det finns väldigt många tutorials för FFT i Matlab, men ett praktiskt exempel hade helt klart varit smidigt!
Mvh
speakman
Detta kan du klistra in i en m-fil. Sedan döper du m-filen till exempelvis 'minfft.m' och sparar i din work-mapp. För att anropa m-filen skriver du helt enkelt 'minfft' i kommandofönstret.
Döds-lita inte på det här - jag är lite trött - men det ger ändå ett humm om hur upplägget ser ut.
Kod: Markera allt
% Exempel på FFT i matlab. Förutsätter float32-kodad mono-fil.
% Samplingsfrekvens
Fs=44100;
% Upplösning på FFT i bitar.
% Ex 10 bitar = 1024 punkters upplösning
Bits=10;
% Eftersom filen vi skall läsa kan vara i vilket format som helst,
% ser vi till att öppna vår fil binärt. Då gör man så här:
File_ID=fopen('G:\minfil.raw','r');
% nu kan vi läsa innehållet filen,
% alla samples läggs i en vektor "samples".
samples=fread(File_ID,inf,'float32');
% Periodtid sampling
Ts=1/Fs;
% Antal sampel i filen
N=length(samples);
% Skapa tidsvektor
t=0:Ts:Ts*N-Ts;
% Skapa frekvensvektor upp till Fs/2 (Nyquist)
f=0:(Fs/2)/2^(Bits-1):Fs/2-(Fs/2)/(2^Bits-1);
% Plotta först originalsamplingen rätt upp och ner, i en övre graf
subplot(2,1,1);plot(t,samples);
% The magic
X=fft(samples,2^Bits);
% Plottar i en undre graf absolutbeloppen av första halvan av fft'n. Absolutbelopp ty fft ger en real- och en imaginärdel.
% Den andra halvan av fft'n är ändå bara spegling av den första.
subplot(2,1,2); semilogx(f,abs(X(1:2^(Bits-1))))
- JimmyAndersson
- Inlägg: 26415
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt: