bonjour,
j'ai besoin de votre aide pour détecter les bandes libres en utilisant la méthode de calcule d’énergie.
voici mon programme:
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
clear
[x,Fs]=wavread('SDRSharp_20151126_220906Z_104686kHz_IQ.wav');%lecture du signal wave
L=length(x);
t=(0:L-1)/Fs;
z=x(:,1)+1i*x(:,2); % Format complexe I+jQ
 
%[f,n]=detFFT(z,Fs);
    NFFT = 2^nextpow2(L);
   y =fft(x,NFFT)/L;
   f=Fs*(-NFFT/2:1:NFFT/2-1)/NFFT;
   n=abs(y);
 
c=0;t=0;H=0;r=0;j=0;
[m,Fb]=wavread('444.wav');%signale wave d'un canal libre
%[a,b]=detFFT(m,Fb);
L=length(m);
NFFT = 2^nextpow2(L);
   o =fft(m,NFFT)/L;
   a=Fb*(-NFFT/2:1:NFFT/2-1)/NFFT;
   b=abs(o);
k=length(n)/41;
for j=1:k
    r=b(j+c)*b(j+c);
    t=t+r; 
    end
   v=t/k;
for i=1:41
    t=0;r=0;
    for j=1:k
    r=n(j+c)*n(j+c); 
    t=t+r; 
    end
    E=t/k;
  if E>=v
    for j=1:k
       H(j+c)=1;
    end
  else
      for j=1:k
      H(j+c)=0;
      end
 end
    c=j*i;
end
 subplot(2,1,1)
 plot(f,n)
subplot(2,1,2)
 plot(H)