MATLAB में स्पेक्ट्रल एंट्रॉपी गणना


9

मैं MATLAB में सिग्नल की स्पेक्ट्रल एन्ट्रॉपी की गणना कैसे करूं? मैं मूल चरणों को जानता हूं लेकिन यह अच्छा होगा यदि कोई मदद कर सकता है,

  1. MATLAB में FFT कमांड का उपयोग करके सिग्नल के पावर स्पेक्ट्रम की गणना करें।
  2. पावर स्पेक्ट्रल घनत्व की गणना पावर स्पेक्ट्रम का उपयोग करके या किसी अन्य तकनीक का उपयोग करके करें।
  3. बीच पावर स्पेक्ट्रल घनत्व को सामान्य करें , ताकि इसे संभाव्यता घनत्व फ़ंक्शन रूप में माना जा सके ।[0,1]पीमैं
  4. एन्ट्रापी गणना करेंएच(रों)=-Σपीमैंलॉग2(पीमैं)


क्या यह वर्णक्रमीय समतलता या वीनर एन्ट्रापी के समान है? dsp.stackexchange.com/q/2045/29
endolith

जवाबों:


9

तकनीकी रूप से यह MATLAB-esque फोरम नहीं है, लेकिन मैं आपके लिए और अधिक विस्तार से चरणों की व्याख्या कर सकता हूं: मान लीजिए कि आपका इनपुट इनपुट है एक्स[n], और इसका डीएफटी है एक्स()। वास्तविक संकेतों के लिए आप एक तरफा डीएफटी का उपयोग कर सकते हैं, क्योंकि अन्य आधा तब बेमानी होगा जब आप इसकी पावर स्पेक्ट्रल घनत्व को देखते हैं। (PSD)।

एक बार जब आप अपने सिग्नल के DFT की गणना कर लेते हैं, तो PSD बस है |एक्स()|2। यही है, आपको अपने डीएफटी परिणाम के पूर्ण परिमाण को चुकता करने की आवश्यकता है।

अब आपको PSD को सामान्य करने की आवश्यकता है जैसे कि इसे प्रायिकता घनत्व फ़ंक्शन, (पीडीएफ) के रूप में देखा जा सकता है। इस प्रकार, एक सामान्यीकृत PSD, (इसे कहते हैंपीएसडीn) बस हो जाएगा:

पीएसडीn()=पीएसडी()Σ=-रों2=रों2पीएसडी()

अंत में, आपकी वर्णक्रमीय एंट्रोपी होगी:

=-Σ=-रों2=रों2पीएसडीn()एलजी2[पीएसडीn()]

5

मैं बस यहाँ है

मेरा स्रोत कोड:

    [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

इस स्रोत कोड में प्रत्येक फ़्रेम ब्लॉक से स्पेक्ट्रल एंट्रॉपी गणना होती है ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.