Perhitungan Entropi Spektral dalam MATLAB

9

Bagaimana cara menghitung Entropi Spektrum sinyal di MATLAB? Saya tahu langkah-langkah dasarnya tetapi akan menyenangkan jika seseorang dapat membantu,

  1. Hitung spektrum daya sinyal menggunakan perintah FFT di MATLAB.
  2. Hitung Kerapatan Spektrum Daya menggunakan spektrum daya atau menggunakan teknik lainnya.
  3. Normalisasikan Power Spectral Density antara , sehingga dapat diperlakukan sebagai fungsi kepadatan probabilitas .[0,1]pi
  4. Hitung EntropiH(s)=pilog2(pi)
RRelan
sumber
Mengenai kode Matlab, coba tanyakan di sini dsprelated.com/code.php
user13107
Apakah ini sama dengan kerataan spektral atau entropi Wiener? dsp.stackexchange.com/q/2045/29
endolith

Jawaban:

9

Secara teknis ini bukan forum MATLAB-esque, tapi saya bisa menjelaskan langkah-langkah lebih rinci untuk Anda: Misalkan sinyal input Anda adalah , dan DFT-nya adalah . Untuk sinyal nyata, Anda dapat menggunakan DFT satu sisi, karena setengah lainnya akan menjadi berlebihan ketika Anda melihat Power Spectral Density-nya. (PSD).X ( f )x[n]X(f)

Setelah Anda menghitung DFT dari sinyal Anda, PSD hanyalah . Artinya, Anda harus mengambil besarnya absolut dari hasil DFT Anda, kuadrat.|X(f)|2

Anda sekarang perlu menormalkan PSD sehingga dapat dilihat sebagai Probability Density Function, (PDF). Jadi, PSD yang dinormalisasi, (sebut saja ) hanya akan menjadi:PSDn

PSDn(f)=PSD(f)f=fs2f=fs2PSD(f)

Akhirnya, entropi spektral Anda adalah:

E=f=fs2f=fs2PSDn(f)log2[PSDn(f)]
Tarin Ziyaee
sumber
5

Saya lakukan di sini

Kode sumber saya:

    [x, Fs, nbits] = wavread('ederwander.wav'); 


    winSize = 2048;

    n_samples = length(x);


    %50% overlap or 0 to not use overlap
    OverlapStep = 50;

    if OverlapStep > 0

        Overlap = floor((OverlapStep*winSize) / 100); 
        nFrames=floor(n_samples/Overlap)-1; 
    else
        Overlap= winSize;
        nFrames=floor(n_samples/Overlap)-1;
    end

    Entropy = zeros(nFrames,1);

    k=1;
    inc=1;

    while ( (k+winSize-1) <= n_samples )

        FrameSignal = x(k:k+winSize-1);

        v = FrameSignal .* hann(length(FrameSignal));           

        N = length(v);

        Y=fft(v);

        % Compute the Power Spectrum
        sqrtPyy = ((sqrt(abs(Y).*abs(Y)) * 2 )/N);
        sqrtPyy = sqrtPyy(1:winSize/2);



       %Normalization
       d=sqrtPyy(:);
       d=d/sum(d+ 1e-12);

       %Entropy Calculation
       logd = log2(d + 1e-12);
       Entropy(inc) = -sum(d.*logd)/log2(length(d));


       k=k+Overlap;
       inc=inc+1;
end

Kode sumber ini melakukan perhitungan Entral Spectral dari setiap blok berbingkai ...

Ederwander
sumber