30/01/2014

script de traitement du signal en utilisant FFT-scilab

script de traitement du signal en utilisant FFT

 

l'example d'un filtre  pass-bas en utilisant FFT 

clc
mode(2)
clear

[x,fe]=wavread('ici vous ecrivez la distination du fichier wav ');
n=length(x);
X=fft(x);
xb=fftshift(X);
nc=floor(n/25);
Z=n-(2*nc+1);
Z1=round(Z/2);
Z2=floor(Z/2);
h=[zeros(1,Z1),ones(1,2*nc+1),zeros(1,Z2)];
x1f=h.*xb;
exec('ifftshift.sci');
xfb=ifftshift(x1f);
xf=ifft(xfb);
plot2d3(xf);
sound(real(xf),fe)

le scriple de ifftshift


function I0=ifftshift(Ib)
    [M,N]=size(Ib);// Je lis la taille de la matrice Ib
    //(M est le nombre de lignes et N est le nombre de colonnes de Ib).
    M2=floor(M/2);// "floor" donne la partie entière par défaut
    N2=floor(N/2);
if  N~=1 //c'est à dire si Ib n'est pas un vecteur colonne
/// Je traite les colonnes de la matrice Ib
    if N-2*N2==0 // c'est à dire si N est pair
        I0=[Ib(:,(N/2)+1:N),Ib(:,1:N/2)];
        Ib=I0; //La nouvelle image
    else // c'est à dire si N est impair
        I0=[Ib(:,(N+1)/2:N),Ib(:,1:(N+1)/2-1)];
        Ib=I0; //La nouvelle image
    end
end
if  M~=1 //c'est à dire si Ib n'est pas un vecteur ligne
/// Je traite les lignes de la matrice Ib
    if M-2*M2==0 // c'est à dire si M est pair
        I0=[Ib((M/2)+1:M,:);Ib(1:M/2,:)];
    else // c'est à dire si M est impair
        I0=[Ib((M+1)/2:M,:);Ib(1:(M+1)/2-1,:)];
    end
end
endfunction
 

0 commentaires:

Enregistrer un commentaire