1 pièce(s) jointe(s)
Filtre et fusion de pulses
Bonjour à toute la communauté,
Je viens vers vous car je suis actuellement face à un petit problème de filtrage. Pour vous exposer mon problème, je vous propose de m'appuyer sur l'image en pièce jointe.
Je possède un signal comme représenté dans la figure a). Ce signal correspond à une succession de pulses (de largeur égale à 1ps) qui sont répétés tous les 10 ns. Je souhaiterai (à l'aide d'un filtre de type RC ou autre) convertir deux pulses successifs en un seul créneau de largeur égale à 10ns + 1ps comme représenté sur la figure b).
Je sais qu'il serait possible de réaliser cette transformation à l'aide d'un algorithme détectant les pulses, mais je souhaite savoir s'il est possible de réaliser cette transformation à partir d'un filtre que je placerai à la sortie de mon générateur de pulses.
Voici un bout de code que j'ai réalisé pour appliquer un filtrage à mon signal de départ, malheureusement je ne vois pas de modification sur l'allure du signal après filtrage :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| clc
clear all
close all
%% Générations de deux pulses
fs = 10^12;
t = 0:1/fs:11*10^-9;
t_pulse = 0.2*10^-9 + [0 10*10^-9];
signal = zeros(1,length(t));
signal_out = zeros(1,length(t));
t_pulse_algo = t_pulse;
ok = 0;
for ii = 1:length(t)
if ~isempty(t_pulse_algo) && (abs(t(ii) - t_pulse_algo(1)) < 10^-20)
signal(1,ii:ii+1) = 1;
t_pulse_algo(1) = [];
ok = 1;
end
if isempty(t_pulse_algo)
ok = 0;
end
if ok
signal_out(1,ii) = 1;
end
end
%% Filtrage
fc = 100*10^6; % Fréquence de coupure du filtre
Wn = (2/fs)*fc;
b = fir1(4,Wn,'low');
fvtool(b,1,'Fs',fs)
y = filter(b,1,signal);
plot(t,signal,'b',t,y,'r*')
xlabel('temps (s)')
legend('signal','signal filtré') |
Pièce jointe 506494
Merci d'avance :)