logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

rejestrowanie dzwieku w czasie rzeczywistym matlab

Kastuog 11 Cze 2007 11:43 10821 6
REKLAMA
  • #1 3973351
    Kastuog
    Poziom 11  
    Musze wykonać szybką transformatę fouriera na probce dźwięku w Matlab. I w wyniku :

    clear all
    Fs = 8000;
    Y = wavrecord(1*Fs,Fs,'single')
    wavwrite(Y,8000,'mowa.wav')
    [Y,Fs,nbits]=wavread('mowa.wav')
    %sound(Y,Fs,nbits)
    figure(1)
    %specgram(Y,512,2); % wy-wietla
    plot(Y)
    X=fft(Y)
    figure(2)
    plot(X)

    Otrzymuje jakieś krzaczki. Chodzi ogolnie o to że mam probkie dźwieku i musze ją obrobić. Filtry gorno, dolno przepustowe ,fft i inne i przedstawic wyniki. Porównania. No i jakoś mi nie idzie:] Prosze o pomoc
  • REKLAMA
  • #2 4019240
    Marian83
    Poziom 20  
    
    [x1,fp1] = wavread('b1');
    N1=length(x1);
    NFFT1 = 2^nextpow2(N1);
    f1 = fp1/2*linspace(0,1,NFFT1/2);
    
    X1=fft(x1,NFFT1);
    plot(f1,abs(X1(1:NFFT1/2)));      grid;   xlabel('f[Hz]'); ylabel('|X(f)|');
    


    http://www.mathworks.com/access/helpdesk/help...ultCount=10&query=fft&submitButtonName=Search
  • REKLAMA
  • #3 4019272
    Kastuog
    Poziom 11  
    Poradziłem juz sobie :) ale dziekuje
  • REKLAMA
  • #4 4020881
    cbdu
    Poziom 11  
    hej
    podlaczam sie pilnie do prosby bo chcialbym w matlabie dostac FFT sygnału i w oparciu o te widmo dobrac filtr FIR dolnoprzepustowy bo odszumic badany sygnal..i cos mi te widmo chyba nie wychodzi
    cechy sygnalu:
    np. FFT_x0_1 to syg nieokresowy z giroskopow (1 kolumna czas, 2 kolumna przysp) 100Hz, czas 60,09s

    x=FFT_x0_1(:,2); % pozbywam sie probkowania z 1 kolumny
    Fs = 100; % Sampling frequency
    T = 1/Fs; % Sample time
    L = 6009; % Length of signal
    t = (0:L-1)*T; % Time vector
    >> plot(Fs*t(1:6009),x(1:6009)) %rysuje sygnal x
    >> NFFT = 2^nextpow2(L); % Im x do^2 ??>> Y = fft(x,NFFT)/L; % fft x
    >> f = Fs/2*linspace(0,1,NFFT/2); % odciecie widma po cz. Nequista ??>> plot(f,2*abs(Y(1:NFFT/2)))

    i wychodzi mi prążek w zerze a nie wiem czemu?
    prosze o popdowiedz
    dziekuje
  • #5 4020883
    cbdu
    Poziom 11  
    cos tu nie gra..

    x=FFT_x0_1(:,2); % pozbywam sie probkowania z 1 kolumny
    Fs = 100; % Sampling frequency
    T = 1/Fs; % Sample time
    L = 6009; % Length of signal
    t = (0:L-1)*T; % Time vector
    >> plot(Fs*t(1:6009),x(1:6009)) %rysuje sygnal x
    >> NFFT = 2^nextpow2(L); % Im x do^2
    >> Y = fft(x,NFFT)/L; % fft x
    >> f = Fs/2*linspace(0,1,NFFT/2); % odciecie widma po cz. Nequista
    >> plot(f,2*abs(Y(1:NFFT/2)))

    Dodano po 32 [minuty]:

    tp=.01;
    t=0.01:tp:60.09;
    f=100;
    x=FFT_x0_1(:,2);
    p=fft(x); %szybka transformata furiera
    g=abs(p);
    plot(t,x) % tak wyglądają próbki
    N=length(t);
    stem((0:1:N-1)/tp/N,g/N*2) %tu mogłem coś spieprzyć
    xlabel('czestotliwosc')
    ylabel('amplituda')

    tu tez jakas wychodzi patologia..mam depresje:(
  • REKLAMA
  • #6 4021409
    cbdu
    Poziom 11  
    prosze kogos o odp co mogloby byc tu zle ze nie wychodzi...:(
  • #7 4022918
    cbdu
    Poziom 11  
    cos wyszlo ale tez nie tak jak chcialem:(..jak zastosowac okno hamminga do wektora x??.. bo tych szumow widmo mi nieuwydatnia:(

    clear all
    clf
    x=FFT_x0_1(:,2);
    x=x-mean(x); % to brakowalo
    Fs=100;
    T=1/Fs;
    L=6009;
    t=(0:L-1)*T;
    NFFT=2^nextpow2(L);
    Y=fft(x,NFFT)/L;
    f = Fs/2*linspace(0,1,NFFT/2);
    plot(f,2*abs(Y(1:NFFT/2)))
REKLAMA