Filtre non linéaire matlab

Fermé
padrozo Messages postés 1 Date d'inscription jeudi 6 janvier 2011 Statut Membre Dernière intervention 6 janvier 2011 - 6 janv. 2011 à 21:04
Bonjour,

j'ai un projet à rendre dans un délai court, et je voudrai vous demander votre aide. Je dois simuler une entrée carrée avec son spectre et voir comment elle est perturbée le long de la ligne (visualiser les différentes distorsions). On considère que la ligne est un filtre non linéaire, c'est à dire que son gain dépend de f, et sa phase ne varie pas linéairement avec f.

J'ai réalisé ce programme avec matlab, en considérant que le filtre est de la forme exp(-(alpha+j*beta)) avec a et b détaillé dans le code ci dessous. je voudrais visualiser le spectre de sortie, nommé "fin" en fonction de f, et "signal" qui est le signal de sortie. Je sais que j'y suis presque mais j'arrive pas à visualiser la sortie.

fo=125;
%fréquence du signal
fe=8000;te = 1/fe% fréquence et période d'échantillonnage
n=1024;% nombre de points
t=0:te:(n-1)*te;% axe des x
y=square(2*pi*fo*t);% signal
close all;plot(t*1000,y);% tracé du signal
figure;s=2*abs(fft(y))/n;% calcul du spectre
s=s(1:n/2);% le spectre est symétrique % fe/2
df=fe/(n-1);% résolution de l'axe des fréquence
f=0:df:fe/2;% axe des fréquence
plot(f,s);

%plot(t,y,t,ifft(s));

set(gca,'xtick',fo:4*fo:4000);% retouche des graduations en f
for k = 1:2:31% enrichir le dessin par les
a=4/k/pi;% amplitudes de chaque harmonique
h=text(k*fo,a+0.02,num2str(a,2));
set(h,'rotation',90);
end;
figure; % tracé du spectre
%seconde partie

alpha= sqrt(pi*100*50*10^-9*f);
beta= sqrt(pi*100*50*10^-9*f);


h= exp(-(alpha+ j*beta));

fin =h*s;

plot(f,fin);


%I=ifft(abs(fin));

figure;
% sortie= ifft(fin);
%sortie = abs(ifft(fin)/1024);
%plot(t,sortie);


signal=ifft(fin,n);
%plot(real(signal));
% hold on;
%plot(imag(signal),'b');

%figure;
t=1/fe*(0:n-1);
plot(t,imag(signal));






merci de votre compréhension