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 : Sélectionner tout - Visualiser dans une fenêtre à part
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é')
Merci d'avance![]()
Partager