Bonjour tout le monde,

Comme decrit dans le titre je suis en train de faire de l'intercorrélation et tout marche plutot bien.

J ai en réalité deux petits soucis :

1. Je pense qu'il y a moyen de reduire le code mais je ne vois pas trop comment etant donné les 'if'.

2. Lorsque je 'plot' mon intercorrélation finale ('Z' dans le code), il me met (logiquement) ma courbe sur 1024 points or je voudrais la voir sur 4096 points avec des zeros autour...
Ce qui implique une intercorrelation par segments...('1-->1024' ; '1025 --> 2048' ; '2049 --> 3072' ; '3073 --> 4096').

Voila, j aimerais savoir si quelqu'un a une idée pour avoir ma fenetre complete sur 1 plot avec mes 4096 points...et s'il y a chevauchement (exemple : de 1000 points à 1256 points) si cela pourrait se gerer facilement...

Merci d avance pour vos reponses.

J espere avoir ete assez clair

Voici mon code :
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
46
47
48
49
50
51
52
53
54
55
 
function balayageIntercorrelation
 
t = [0:4096]; % de 0 à 1000 points
sig = sin(t/(2*pi)); % Original signal, a sine wave
 
% Signal servant à l'intercorrelation (sur 1024 points obligatoirement)
sig2 = zeros(1, 1024);
sig2(1,1:256)= 0.000075*sig(1,1:256);
 
% Signal à intercorreler (taille sans zero padding : 256 points obligatoirement)
sig3 = zeros(1,4096);
sig3(1,1100:1356)=sig(1,1100:1356);
 
% Boucle pour le premier segment (1 --> 1024)
% for N=1:1024:4096;
    for i=1:1024;
        if  sig3(1,i) ~= 0
            X = fft(sig2);% fft du signal de reference
            Y = fft(sig3(1:1024));% fft du signal à intercorreler
        end
    end
 
% Boucle pour le deuxieme segment
    for i=1025:2048; 
        if  sig3(1,i) ~= 0
            X = fft(sig2);% fft du signal de reference
            Y = fft(sig3(1025:2048));% fft du signal à intercorreler
        end
    end
 
% Boucle pour le 3e segment
    for i=2049:3072; 
        if  sig3(1,i) ~= 0
            X = fft(sig2);% fft du signal de reference
            Y = fft(sig3(2049:3072));% fft du signal à intercorreler
        end
    end
 
% Boucle pour le 4e segment
    for i=3073:4096; 
        if  sig3(1,i) ~= 0
            X = fft(sig2); % fft du signal de reference
            Y = fft(sig3(3073:4096)); % fft du signal à intercorreler
        end
    end
 
% Calcul de l'intercorrelation
    Z = real(ifft(conj(X).*Y));
 
 
subplot(2,4,1), plot(sig), title('sig')
subplot(2,4,2), plot(sig2), title('sig2')
subplot(2,4,3), plot(sig3), title('sig3')
subplot(2,4,7), plot(Z), title('fft')