이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

pentropy

신호의 스펙트럼 엔트로피

설명

예제

se = pentropy(xt)는 단일 변수, 단일 열 timetablext스펙트럼 엔트로피timetablese로 반환합니다. pentropypspectrum의 디폴트 옵션을 사용하여 xt의 스펙트로그램을 계산합니다.

예제

se = pentropy(x,sampx)는 샘플 레이트 또는 시간 간격 sampx로 샘플링한 벡터 x의 스펙트럼 엔트로피를 벡터로 반환합니다.

예제

se = pentropy(p,fp,tp)는 전력 스펙트로그램 p를 스펙트로그램 주파수와 시간 벡터인 fptp와 함께 사용하여 스펙트럼 엔트로피를 반환합니다.

pentropy에 적용되는 디폴트 pspectrum 옵션을 그대로 수용하는 대신, pspectrum에 대한 옵션을 사용자 지정하고자 하는 경우에 이 구문을 사용합니다.

예제

se = pentropy(___,Name,Value)는 이름-값 쌍의 인수를 사용하여 추가 속성을 지정합니다. 옵션에는 순시 엔트로피 또는 전체 신호 엔트로피, 백색 잡음 엔트로피에 의한 스케일링, 주파수 제한, 시간 제한 등이 있습니다.

Name,Value는 위에 열거된 구문의 모든 입력 인수와 함께 사용할 수 있습니다.

예제

[se,t] = pentropy(___)는 스펙트럼 엔트로피 se를 시간 벡터 또는 timetablet와 함께 반환합니다. setimetable형이면, ttimetablese의 행 시간값과 같습니다. 이러한 출력 인수는 위에 열거된 구문의 모든 입력 인수와 함께 사용할 수 있습니다.

pentropy(___)는 다음 중 하나를 수행합니다.

  • 시간에 대해 스펙트럼 엔트로피를 플로팅합니다(Instantaneoustrue임).

  • 스펙트럼 엔트로피의 스칼라 값을 출력합니다(Instantaneousfalse임).

예제

모두 축소

타임테이블과 시계열로 표현되는 신호의 스펙트럼 엔트로피를 플로팅합니다.

정규분포(백색 잡음)를 갖는 난수열을 생성합니다.

xn = randn(1000,1);

시간 벡터 t를 생성한 다음, duration형 벡터 tdur로 변환합니다. 타임테이블에 tdurxn을 결합합니다.

fs = 10;
ts = 1/fs;
t = 0.1:ts:100;
tdur = seconds(t);
xt = timetable(tdur',xn);

타임테이블 xt의 스펙트럼 엔트로피를 플로팅합니다.

pentropy(xt)
title('Spectral Entropy of White Noise Signal Timetable')

시간 지점 벡터 t를 사용하고 se 및 이와 연결된 시간 te를 반환하는 형식을 사용하여, 신호의 스펙트럼 엔트로피를 플로팅합니다. 비교를 위해 x축 단위 및 그리드를 pentropy에서 생성된 플롯과 맞춰 봅니다.

[se,te] = pentropy(xn,t');
te_min = te/60;
plot(te_min,se)
title('Spectral Entropy of White Noise Signal Vector')
xlabel('Time (mins)')
ylabel('Spectral Entropy')
grid on

두 가지 모두 결과가 동일합니다.

pentropy의 두 번째 입력 인수는 주파수 또는 시간을 나타낼 수 있습니다. 소프트웨어는 이 인수를 데이터형에 따라 해석합니다. 시간 벡터 t 대신에 샘플 레이트인 스칼라 fs를 사용하여, 신호의 스펙트럼 엔트로피를 플로팅합니다.

pentropy(xn,fs)
title('Spectral Entropy of White Noise Signal Vector using Sample Rate')

이 플롯은 이전 플롯과 일치합니다.

음성 신호의 스펙트럼 엔트로피를 플로팅한 다음, 원래 신호와 비교합니다. 먼저 전력 스펙트로그램을 생성한 다음 음성 대역폭 내에 있는 주파수 Bin의 스펙트럼 엔트로피를 사용하여, 스펙트럼 엔트로피를 컬러맵에 시각화합니다.

주변에 약간의 백색 잡음이 있는 상태에서 "Hello"라는 단어를 2채널로 녹음한 데이터 x를 불러옵니다. x는 두 채널을 나타내는 두 개의 열로 구성됩니다. 첫 번째 채널만 사용합니다.

샘플 레이트와 시간 벡터를 정의합니다. x의 첫 번째 채널에 백색 잡음을 첨가하여 신호 대 잡음비를 약 5:1로 만듭니다.

load Hello x
fs = 44100;
t = 1/fs*(0:length(x)-1);
x1 = x(:,1) + 0.01*randn(length(x),1);

스펙트럼 엔트로피를 구합니다. 원래 신호의 데이터와 스펙트럼 엔트로피의 데이터를 시각화합니다.

[se,te] = pentropy(x1,fs);

subplot(2,1,1)
plot(t,x1)
ylabel('Speech Signal')
xlabel('Time')

subplot(2,1,2)
plot(te,se)
ylabel('Spectral Entropy')
xlabel('Time')

"Hello"라고 말하는 시점에 스펙트럼 엔트로피가 떨어집니다. 신호 스펙트럼이 거의 상수(백색 잡음)였다가 사람의 목소리 분포로 변했기 때문입니다. 사람의 목소리 분포는 더 많은 정보를 포함하며 스펙트럼 엔트로피가 낮습니다.

원래 신호의 전력 스펙트로그램 p를 계산하고 주파수 벡터 fp와 시간 벡터 tp도 반환합니다. 이 경우, 주파수 분해능을 20Hz로 지정하면 비교적 명확한 결과를 얻을 수 있습니다.

[p,fp,tp] = pspectrum(x1,fs,'FrequencyResolution',20,'spectrogram');

전력 스펙트로그램의 주파수 벡터가 22,050Hz에 이르지만, 관심 음성 범위는 전화 기술 대역폭 300Hz~3400Hz로 제한됩니다. 시작점과 끝점을 정의하여 데이터를 5개의 주파수 Bin으로 나눈 다음, 각 Bin에 대한 스펙트럼 엔트로피를 계산합니다.

flow = [300 628 1064 1634 2394];
fup = [627 1060 1633 2393 3400];
 
se2 = zeros(length(flow),size(p,2));
for i = 1:length(flow)
    se2(i,:) = pentropy(p,fp,tp,'FrequencyLimits',[flow(i) fup(i)]);
end

주파수 Bin을 오름차순으로 나타낸 데이터를 컬러맵에 시각화하고 원래 신호와 비교합니다.

subplot(2,1,1)
plot(t,x1)
xlabel('Time (seconds)')
ylabel('Speech Signal')

subplot(2,1,2)
imagesc(tp,[],flip(se2))    % Flip se2 so its plot corresponds to the ascending frequency bins.
h = colorbar(gca,'NorthOutside');
ylabel(h,'Spectral Entropy')
yticks(1:5)
set(gca,'YTickLabel',num2str((5:-1:1).')) % Label the ticks for the ascending bins.
xlabel('Time (seconds)')
ylabel('Frequency Bin')

사인파로 구성된 세그먼트와 백색 잡음을 결합한 신호를 생성합니다. 스펙트럼 엔트로피를 사용하여 사인파의 존재 여부와 그 위치를 감지합니다.

3개의 세그먼트가 포함된 신호를 생성하고 플로팅합니다. 중간 세그먼트에 백색 잡음과 함께 사인파가 있습니다. 나머지 두 세그먼트는 순수 백색 잡음입니다.

fs = 100;
t = 0:1/fs:10;
sin_wave = 2*sin(2*pi*20*t')+randn(length(t),1);
x = [randn(1000,1);sin_wave;randn(1000,1)];
t3 = 0:1/fs:30;

plot(t3,x)
title('Sine Wave in White Noise')

스펙트럼 엔트로피를 플로팅합니다.

pentropy(x,fs)
title('Spectral Entropy of Sine Wave in White Noise')

플롯에서 사인파가 있는 세그먼트와 백색 잡음 세그먼트가 분명히 구별됩니다. 사인파에 정보가 포함되어 있기 때문입니다. 순수 백색 잡음의 스펙트럼 엔트로피가 가장 높습니다.

pentropy의 디폴트 값은 이전 플롯에서 표시된 것처럼 각 시간 지점의 순시 스펙트럼 엔트로피를 반환하거나 플로팅합니다. 'Instantaneous'false로 설정하여 스펙트럼 엔트로피 정보를 전체 신호를 대표하는 단일 숫자로 정리할 수도 있습니다. 이 결과를 다른 계산에서 바로 사용하고자 할 경우 스펙트럼 엔트로피 값을 반환하는 형식을 사용하십시오. 그러지 않으면 pentropy는 스펙트럼 엔트로피를 ans로 반환합니다.

se = pentropy(x,fs,'Instantaneous',false)
se = 0.9035

단일 숫자는 신호의 스펙트럼 엔트로피 특성을 나타내기 때문에 신호의 정보적 특성에 해당합니다. 이 숫자를 사용하여 해당 신호와 다른 신호를 효율적으로 비교할 수 있습니다.

입력 인수

모두 축소

pentropy가 스펙트럼 엔트로피 se를 반환하는 신호 타임테이블로, 단일 열을 가진 단일 변수가 포함된 timetable형으로 지정됩니다. xt는 증가하는 유한한 행 시간값을 포함해야 합니다. xt timetable에 누락되거나 중복된 시간 지점이 포함된 경우 누락되거나 중복되거나 불균일하게 분포된 시간값이 포함된 타임테이블 정리하기 (MATLAB)에 나와 있는 팁을 활용하여 수정할 수 있습니다. xt는 중앙값 시간 간격과 평균 시간 간격이 따라야 하는 pspectrum 제약 조건을 사용하여 불균일하게 샘플링할 수 있습니다.

1100<Median time intervalMean time interval<100.

예제는 신호의 스펙트럼 엔트로피 플로팅하기 항목을 참조하십시오.

pentropy가 스펙트럼 엔트로피 se를 반환하는 시계열 신호로, 벡터로 지정됩니다.

샘플 레이트 또는 샘플 시간으로, 다음 중 하나로 지정됩니다.

  • 양의 숫자형 스칼라 — 주파수(단위: Hz)

  • duration형 스칼라 — X의 연속 샘플 간 시간 간격

  • 벡터, duration형 배열 또는 datetime형 배열 — x의 각 요소에 해당하는 시점 또는 지속 시간

sampx가 시간 벡터를 나타내는 경우, 중앙값 시간 간격과 평균 시간 간격이 따라야 하는 pspectrum 제약 조건을 사용하여 시간 샘플을 불균일하게 만들 수 있습니다.

1100<Median time intervalMean time interval<100.

예제는 신호의 스펙트럼 엔트로피 플로팅하기 항목을 참조하십시오.

신호의 전력 스펙트로그램 또는 스펙트럼으로, 행렬(스펙트로그램) 또는 열 벡터(스펙트럼)로 지정됩니다. p를 지정할 경우 pentropy는 자체 스펙트로그램 또는 전력 스펙트로그램을 생성하기보다 p를 사용합니다. 주파수와 시간 정보를 제공하는 fptp에는 p가 있어야 합니다. i번째 행, j번째 열에 있는 p의 각 요소는 중심이 fp(i)와 시간 인스턴스 tp(j)에 맞춰진 주파수 Bin의 신호 전력을 나타냅니다.

예제는 음성 신호의 스펙트럼 엔트로피 플로팅하기 항목을 참조하십시오.

ppentropy에 명시적으로 제공된 경우 스펙트로그램 또는 전력 스펙트로그램 p의 주파수로, 벡터(단위: Hz)로 지정됩니다. fp의 길이는 s의 행 개수와 동일해야 합니다.

ppentropy에 명시적으로 제공된 경우 전력 스펙트로그램 또는 스펙트럼 p의 시간 정보로, 다음 중 하나로 지정됩니다.

  • 데이터형이 숫자형, duration형 또는 datetime형일 수 있는 시간 지점으로 구성된 벡터. 벡터 tp의 길이는 p의 열 개수와 같아야 합니다.

  • p의 시간 간격을 나타내는 duration형 스칼라. 스칼라 형식의 tpp가 전력 스펙트로그램 행렬인 경우에만 사용할 수 있습니다.

  • p가 열 벡터(전력 스펙트럼)인 특수한 경우 tp는 스펙트럼의 시간 지점을 나타내는 숫자형, duration형 또는 datetime형 스칼라일 수 있습니다.

p가 열 벡터(전력 스펙트럼)인 특수한 경우 tp는 스펙트럼의 시간 지점을 나타내는 single형/double형/duration형/datetime형 스칼라일 수 있습니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'Instantaneous',false,'FrequencyLimits',[25 50]은 25Hz부터 50Hz까지의 범위에 속하는 신호의 부분을 나타내는 스칼라 스펙트럼 엔트로피를 계산합니다.

순시 시계열 옵션으로, 'Instantaneous'와 함께 논리값이 쉼표로 구분되어 지정됩니다.

  • Instantaneoustrue인 경우 pentropy는 순시 스펙트럼 엔트로피를 시계열 벡터로 반환합니다.

  • Instantaneousfalse인 경우 pentropy는 전체 신호 또는 전체 스펙트럼의 스펙트럼 엔트로피 값을 스칼라로 반환합니다.

예제는 스펙트럼 엔트로피를 사용하여 백색 잡음에서 사인파 감지하기 항목을 참조하십시오.

백색 잡음에 의한 스케일 옵션으로, 'Scaled'와 함께 논리값이 쉼표로 구분되어 지정됩니다. 백색 잡음에 의한 스케일 즉, log2n(여기서 n은 주파수 지점 개수임)은 스펙트럼 엔트로피에 설명된 정규화와 동일합니다. 이 옵션을 사용하면 서로 다른 길이의 신호를 바로 비교할 수 있습니다.

  • Scaledtrue이면 pentropy는 해당 백색 잡음의 스펙트럼 엔트로피로 스케일링된 스펙트럼 엔트로피를 반환합니다.

  • Scaledfalse이면 pentropy는 스펙트럼 엔트로피를 스케일링하지 않습니다.

사용할 주파수 제한으로, 'FrequencyLimits'와 함께 하한과 상한인 f1과 f2(단위: Hz)를 포함하는, 요소를 2개 가진 벡터가 쉼표로 구분되어 지정됩니다. 디폴트 값은 [0 sampfreq/2]로, 여기서 sampfreqpentropysampx에서 도출한 샘플 레이트(단위: Hz)입니다.

이 사양을 지정할 경우 스펙트럼 범위의 양쪽 끝에 있는 데이터 대역을 제외시킬 수 있습니다.

예제는 음성 신호의 스펙트럼 엔트로피 플로팅하기 항목을 참조하십시오.

시간 제한으로, 'TimeLimits'와 함께 하한과 상한인 f1과 f2(단위: Hz)를 포함하는, 요소를 2개 가진 벡터가 쉼표로 구분되어 지정됩니다. 단위는 sampx에 지정된 샘플 시간과 동일하며 데이터형은 다음과 같습니다.

  • sampx가 숫자형이거나 duration형인 경우 숫자형 또는 duration

  • sampxdatetime형인 경우 숫자형, duration형 또는 datetime

이 사양을 지정할 경우 전체 시간 범위에서 데이터의 시간 세그먼트를 추출할 수 있습니다.

출력 인수

모두 축소

스펙트럼 엔트로피로, 입력 신호가 timetablext인 경우 timetable형으로 반환되고 입력 신호가 시계열 x인 경우 double형 벡터로 반환됩니다.

se와 연결된 시간 값으로, se에서의 시간과 동일한 형식으로 반환됩니다.

예제는 신호의 스펙트럼 엔트로피 플로팅하기 항목을 참조하십시오.

세부 정보

모두 축소

스펙트럼 엔트로피

신호의 스펙트럼 엔트로피(SE)는 스펙트럼 전력 분포를 측정한 값입니다. 이 개념은 정보 이론의 섀넌 엔트로피(Shannon entropy) 또는 정보 엔트로피를 기반으로 합니다. SE는 주파수 영역에서의 신호의 정규화된 전력 분포를 확률 분포로 취급하여 이 분포의 섀넌 엔트로피를 계산합니다. 이 경우 섀넌 엔트로피는 신호의 스펙트럼 엔트로피입니다. 이 속성은 오류 감지 및 진단 [1], [2]에서 특징을 추출하는 데 유용합니다. 또한 SE는 음성 인식 [3]과 생체 의학 신호 처리 [4]에서의 특징으로 널리 사용됩니다.

스펙트럼 엔트로피의 방정식은 신호의 전력 스펙트럼과 확률 분포의 방정식에서 도출됩니다. 신호 x(n)에 대해 전력 스펙트럼은 S(m) = |X(m)|2이고, 여기서 X(m)은 x(n)의 이산 푸리에 변환입니다. 그러면 확률 분포 P(m)은 다음과 같습니다.

P(m)=S(m)iS(i).

스펙트럼 엔트로피 H는 다음과 같습니다.

H=m=1NP(m)log2P(m).

정규화하면 다음과 같습니다.

Hn=m=1NP(m)log2P(m)log2N,

여기서 N은 총 주파수 지점 개수입니다. 분모 log2N은 주파수 영역에 균일하게 분포된, 백색 잡음의 최대 스펙트럼 엔트로피를 나타냅니다.

시간-주파수 전력 스펙트로그램 S(t,f)가 알려진 경우 확률 분포는 다음이 됩니다.

P(m)=tS(t,m)ftS(t,f).

스펙트럼 엔트로피는 여전히 다음과 같습니다.

H=m=1NP(m)log2P(m).

시간-주파수 전력 스펙트로그램 S(t,f)가 주어졌을 때 순시 스펙트럼 엔트로피를 계산할 경우 시간 t에서의 확률 분포는 다음과 같습니다.

P(t,m)=S(t,m)fS(t,f).

그러면 시간 t에서의 스펙트럼 엔트로피는 다음과 같습니다.

H(t)=m=1NP(t,m)log2P(t,m).

참고 문헌

[1] Sharma, V., and A. Parey. "A Review of Gear Fault Diagnosis Using Various Condition Indicators." Procedia Engineering. Vol. 144, 2016, pp. 253–263.

[2] Pan, Y. N., J. Chen, and X. L. Li. "Spectral Entropy: A Complementary Index for Rolling Element Bearing Performance Degradation Assessment." Proceedings of the Institution of Mechanical Engineers, Part C: Journal of Mechanical Engineering Science. Vol. 223, Issue 5, 2009, pp. 1223–1231.

[3] Shen, J., J. Hung, and L. Lee. "Robust Entropy-Based Endpoint Detection for Speech Recognition in Noisy Environments." ICSLP. Vol. 98, November 1998.

[4] Vakkuri, A., A. Yli‐Hankala, P. Talja, S. Mustola, H. Tolvanen‐Laakso, T. Sampson, and H. Viertiö‐Oja. "Time‐Frequency Balanced Spectral Entropy as a Measure of Anesthetic Drug Effect in Central Nervous System during Sevoflurane, Propofol, and Thiopental Anesthesia." Acta Anaesthesiologica Scandinavica. Vol. 48, Number 2, 2004, pp. 145–153.

참고 항목

| |

R2018a에 개발됨