Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

instfreq

순시 주파수 추정

설명

예제

ifq = instfreq(x,fs)는 레이트 fs로 샘플링된 신호 x의 순시 주파수를 추정합니다. x가 행렬이면 함수는 각 열의 순시 주파수를 개별적으로 추정하고 결과를 ifq의 대응하는 열로 반환합니다.

예제

ifq = instfreq(x,t)t에 저장된 시간 값으로 샘플링된 x의 순시 주파수를 추정합니다.

예제

ifq = instfreq(xt)는 MATLAB® 타임테이블 xt에 저장된 신호의 순시 주파수를 추정합니다. 함수는 타임테이블의 모든 변수와 각 변수 내에 있는 모든 열을 개별적으로 취급합니다.

예제

ifq = instfreq(tfd,fd,td)는 시간-주파수 분포 tfdfd에 저장된 주파수 값과 td에 저장된 시간 값으로 샘플링된 신호의 순시 주파수를 추정합니다.

예제

ifq = instfreq(___,Name=Value)는 이름-값 인수를 사용하여, 위에 열거된 구문에 대한 추가 옵션을 지정합니다. 순시 주파수를 추정하는 데 사용되는 알고리즘이나 계산에 사용되는 주파수 제한을 지정할 수 있습니다.

예제

[ifq,t] = instfreq(___)ifq에 대응되는 샘플 시간으로 구성된 벡터 t도 반환합니다.

예제

instfreq(___)에 출력 인수를 지정하지 않으면 추정된 순시 주파수를 플로팅합니다.

예제

모두 축소

4초 동안 5kHz로 샘플링된 신호를 생성합니다. 신호는 증가하는 추세를 갖는 변동적인 주파수와 진동하는 진폭이 있는 영역으로 구분된, 지속 기간이 줄어드는 펄스 세트로 구성됩니다. 신호를 플로팅합니다.

fs = 5000;
t = 0:1/fs:4-1/fs;

s = besselj(0,1000*(sin(2*pi*t.^2/8).^4));

% To hear, type sound(s,fs)

plot(t,s)

Figure contains an axes object. The axes object contains an object of type line.

신호의 시간 종속 주파수를 파워 스펙트로그램의 1차 모멘트로 추정합니다. 파워 스펙트로그램을 플로팅하고 순시 주파수를 겹쳐 표시합니다.

instfreq(s,fs)

Figure contains an axes object. The axes object with title Instantaneous Frequency Estimate, xlabel Time (s), ylabel Frequency (kHz) contains 2 objects of type image, line. This object represents Instantaneous Frequency.

정현적으로 변하는 주파수 성분을 갖는 처프로 구성된 복소수 값 신호를 생성합니다. 신호는 1초간 3kHz로 샘플링되며 백색 가우스 잡음에 묻혀 있습니다.

fs = 3000;
t = 0:1/fs:1-1/fs;
x = exp(2j*pi*100*cos(2*pi*2*t))+randn(size(t))/100;

신호의 시간 종속 주파수를 파워 스펙트로그램의 1차 모멘트로 추정합니다. 이것은 instfreq가 복소수 값 신호를 지원하는 유일한 방법입니다. 파워 스펙트로그램을 플로팅하고 순시 주파수를 겹쳐 표시합니다.

instfreq(x,t)

Figure contains an axes object. The axes object with title Instantaneous Frequency Estimate, xlabel Time (ms), ylabel Frequency (kHz) contains 2 objects of type image, line. This object represents Instantaneous Frequency.

2개의 전압 제어 발진기로 구성된, 2초 동안 1kHz로 샘플링된 2채널 신호를 생성합니다.

  • 한 채널에는 시간에 따라 순시 주파수가 변하는 톱니파가 있으며, 이때 최댓값은 주기의 75% 위치에 있습니다.

  • 다른 채널에는 시간에 따라 순시 주파수가 변하는 구형파가 있으며, 듀티 사이클이 30%입니다.

두 채널의 스펙트로그램을 플로팅합니다. 톱니파 채널의 시간 분해능을 0.1초로 지정하고 구형파 채널의 주파수 분해능을 10Hz로 지정합니다.

fs = 1000;
t = (0:1/fs:2)';
x = vco(sawtooth(2*pi*t,0.75),[0.1 0.4]*fs,fs);
y = vco(square(2*pi*t,30),[0.1 0.3]*fs,fs);

subplot(1,2,1)
pspectrum(x,fs,'spectrogram','TimeResolution',0.1)
subplot(1,2,2)
pspectrum(y,fs,'spectrogram','FrequencyResolution',10)

Figure contains 2 axes objects. Axes object 1 with title Fres = 25.6675 Hz, Tres = 100 ms, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image. Axes object 2 with title Fres = 10.0263 Hz, Tres = 256 ms, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

신호를 타임테이블에 저장합니다. 순시 주파수를 계산하고 표시합니다.

xt = timetable(seconds(t),x,y);

clf
instfreq(xt)

Figure contains an axes object. The axes object with title Instantaneous Frequency Estimate, xlabel Time, ylabel Frequency (Hz) contains 2 objects of type line. These objects represent x\_instfreq, y\_instfreq.

해석적 신호를 사용하여 계산을 반복합니다.

instfreq(xt,'Method','hilbert')

Figure contains an axes object. The axes object with title Instantaneous Frequency Estimate, xlabel Time, ylabel Frequency (Hz) contains 2 objects of type line. These objects represent x\_instfreq, y\_instfreq.

가우스 변조된 2차 처프를 생성합니다. 2kHz의 샘플 레이트와 4초의 신호 지속 기간을 지정합니다.

fs = 2000;
t = 0:1/fs:4-1/fs;

q = chirp(t-1,0,1/2,20,'quadratic',100,'convex').*exp(-1.7*(t-2).^2);
plot(t,q)

Figure contains an axes object. The axes object contains an object of type line.

디폴트 설정으로 pspectrum 함수를 사용하여 신호의 파워 스펙트럼을 추정합니다. 추정값을 사용하여 순시 주파수를 계산합니다.

[p,f,t] = pspectrum(q,fs,'spectrogram');

instfreq(p,f,t)

Figure contains an axes object. The axes object with title Instantaneous Frequency Estimate, xlabel Time (s), ylabel Frequency (kHz) contains 2 objects of type image, line. This object represents Instantaneous Frequency.

싱크로스퀴즈 푸리에 변환을 사용하여 계산을 반복합니다. 500개 샘플로 구성된 핸(Hann) 윈도우를 사용하여 신호를 세그먼트로 나누고 세그먼트에 윈도우를 적용합니다.

[s,sf,st] = fsst(q,fs,hann(500));

instfreq(abs(s).^2,sf,st)

Figure contains an axes object. The axes object with title Instantaneous Frequency Estimate, xlabel Time (s), ylabel Frequency (kHz) contains 2 objects of type image, line. This object represents Instantaneous Frequency.

두 가지 방법을 사용하여 구한 순시 주파수를 비교합니다.

[psf,pst] = instfreq(p,f,t);
[fsf,fst] = instfreq(abs(s).^2,sf,st);

plot(fst,fsf,pst,psf)

Figure contains an axes object. The axes object contains 2 objects of type line.

분산이 1/16인 백색 가우스 잡음을 포함하는, 0.3초 동안 1kHz로 샘플링된 정현파 신호를 생성합니다. 정현파 주파수를 200Hz로 지정합니다. 신호의 순시 주파수를 추정하고 표시합니다.

fs = 1000;
t = (0:1/fs:0.3-1/fs)';

x = sin(2*pi*200*t) + randn(size(t))/4;

instfreq(x,t)

Figure contains an axes object. The axes object with title Instantaneous Frequency Estimate, xlabel Time (ms), ylabel Frequency (Hz) contains 2 objects of type image, line. This object represents Instantaneous Frequency.

이번에는 25Hz의 성긴 주파수 분해능을 입력값으로 갖는 시간-주파수 분포를 사용하여 신호의 순시 주파수를 다시 추정합니다.

[p,fd,td] = pspectrum(x,t,'spectrogram','FrequencyResolution',25);

instfreq(p,fd,td)

Figure contains an axes object. The axes object with title Instantaneous Frequency Estimate, xlabel Time (ms), ylabel Frequency (Hz) contains 2 objects of type image, line. This object represents Instantaneous Frequency.

300Hz ~ 1200Hz의 범위에서 정현적으로 변하는 주파수 성분을 갖는 처프로 구성된 신호를 생성합니다. 신호는 2초 동안 3kHz로 샘플링됩니다.

fs = 3e3;
t = 0:1/fs:2;
y = chirp(t,100,1,200,"quadratic");
y = vco(cos(2*pi*t),[0.1 0.4]*fs,fs);

instfreq를 사용하여 신호의 순시 주파수와 대응하는 샘플 시간을 계산합니다. tfsmoment (Predictive Maintenance Toolbox)에서 계산한 대로 출력값이 신호의 시간-주파수 분포의 중심화되지 않은 1차 조건부 스펙트럼 모멘트와 일치하는지 확인합니다.

[z,tz] = instfreq(y,fs);
[a,ta] = tfsmoment(y,fs,1,Centralize=false);

plot(tz,z,ta,a,".")
legend("instfreq","tfsmoment")

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent instfreq, tfsmoment.

instbw 항목을 사용하여 신호의 순시 대역폭과 대응하는 샘플 시간을 계산합니다. 스케일링 인자를 1로 지정합니다. 출력값이 신호의 시간-분포의 중심화된 2차 조건부 스펙트럼 모멘트의 제곱근과 일치하는지 확인합니다. 즉, instbw가 표준편차를 생성하고 tfsmoment가 분산을 생성합니다.

[w,tw] = instbw(y,fs,ScaleFactor=1);
[m,tm] = tfsmoment(y,fs,2);

plot(tw,w,tm,sqrt(m),".")
legend("instbw","tfsmoment")

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent instbw, tfsmoment.

입력 인수

모두 축소

입력 신호로, 벡터나 행렬로 지정됩니다. x가 벡터이면 instfreq는 x를 단일채널로 처리합니다. x가 행렬이면 함수는 각 열의 순시 주파수를 개별적으로 계산하고 결과를 ifq의 대응하는 열로 반환합니다.

예: sin(2*pi*(0:127)/16)+randn(1,128)/100은 잡음이 있는 정현파를 지정합니다.

예: [2 1].*sin(2*pi*(0:127)'./[16 64])는 2채널 정현파를 지정합니다.

데이터형: single | double
복소수 지원 여부:

샘플 레이트로, 양의 스칼라로 지정됩니다. 샘플 레이트는 단위 시간당 샘플 개수입니다. 시간 단위가 초이면 샘플 레이트의 단위는 Hz입니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

샘플 시간으로, 실수형 벡터, duration형 스칼라, duration형 배열 또는 datetime형 배열로 지정됩니다.

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

  • 실수형 벡터, duration형 배열 또는 datetime형 배열 — x의 각 요소에 대응되는 시점.

예: seconds(1)은 신호의 연속 측정값 사이에 1초 지연값을 지정합니다.

예: seconds(0:8)은 신호가 8초 동안 1Hz로 샘플링된다고 지정합니다.

데이터형: single | double | duration | datetime

입력 타임테이블입니다. xt는 증가하는 유한한 행 시간값을 포함해야 합니다.

타임테이블에 누락되거나 중복된 시간 지점이 포함된 경우 누락되거나 중복되거나 불균일하게 분포된 시간값이 포함된 타임테이블 정리하기에 나와 있는 팁을 활용하여 수정할 수 있습니다.

예: timetable(seconds(0:4)',randn(5,1))은 4초 동안 1Hz로 샘플링된 확률 과정을 지정합니다.

예: timetable(seconds(0:4)',randn(5,3),randn(5,4))는 둘 다 4초 동안 1Hz로 샘플링된 3채널 확률 과정과 4채널 확률 과정을 포함합니다.

데이터형: single | double
복소수 지원 여부:

시간-주파수 분포로, fd에 저장된 주파수와 td에 저장된 시간 값으로 샘플링된 행렬로 지정됩니다. 이 입력 인수는 Method"tfmoment"로 설정된 경우에만 지원됩니다.

예: [p,f,t] = pspectrum(sin(2*pi*(0:511)/4),4,"spectrogram")은 128초 동안 4Hz로 샘플링된 1Hz 정현파의 시간-주파수 분포와 이 값이 계산되는 주파수 및 시간을 지정합니다.

데이터형: single | double

시간-주파수 분포의 주파수 값과 시간 값으로, 벡터로 지정됩니다. 이 입력 인수는 Method"tfmoment"로 설정된 경우에만 지원됩니다.

예: [p,f,t] = pspectrum(sin(2*pi*(0:511)/4),4,"spectrogram")은 128초 동안 4Hz로 샘플링된 1Hz 정현파의 시간-주파수 분포와 이 값이 계산되는 주파수 및 시간을 지정합니다.

데이터형: single | double

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'Method','tfmoment','FrequencyLimits',[25 50]은 시간-주파수 분포의 1차 조건부 스펙트럼 모멘트를 구하여 25Hz ~ 50Hz 범위에서 입력값의 순시 준파수를 계산합니다.

주파수 범위로, 요소를 2개 가진 벡터(단위: Hz)로 지정됩니다. FrequencyLimits를 지정하지 않으면 이 인수는 기본적으로 실수 값 신호의 경우 [0 fs/2]로 설정되고, 복소수 값 신호의 경우 [-fs/2 fs/2]로 설정됩니다. 이 인수는 Method"tfmoment"로 설정된 경우에만 지원됩니다.

데이터형: single | double

계산 방법으로, "tfmoment" 또는 "hilbert"로 지정됩니다.

  • "tfmoment" — 순시 주파수를 x의 시간-주파수 분포의 1차 조건부 스펙트럼 모멘트로 계산합니다. x가 불균일하게 샘플링된 경우 함수는 신호를 균일한 그리드로 보간하여 순시 주파수를 계산합니다.

  • "hilbert" — 순시 주파수를 힐베르트 변환을 사용하여 구한 x의 해석적 신호의 위상의 도함수로 계산합니다. 이 방법은 균일하게 샘플링된 실수 신호만 받으며 시간-주파수 분포 입력값은 지원하지 않습니다.

출력 인수

모두 축소

순시 주파수로, 입력값과 동일한 차원을 갖는 벡터, 행렬 또는 timetable형으로 반환됩니다.

데이터형: single | double

주파수 추정값의 시간으로, 실수형 벡터, duration형 배열 또는 datetime형 배열로 반환됩니다.

데이터형: single | double

참고

t, fd 또는 td가 단정밀도이고 입력 벡터 또는 행렬이 배정밀도인 경우, 함수는 출력값을 단정밀도로 반환합니다. 출력 데이터형은 샘플 레이트 데이터형에 따라 달라지지 않습니다.

세부 정보

모두 축소

순시 주파수

비정상(Nonstationary) 신호의 순시 주파수는 신호 변화에 따른 주파수의 평균과 관련이 있는 시변 파라미터입니다. [1], [2].

  • 'Method''tfmoment'로 설정된 경우 instfreq는 순시 주파수를 입력 신호의 시간-주파수 분포의 1차 조건부 스펙트럼 모멘트로 추정합니다. 이 함수는 다음을 수행합니다.

    1. pspectrum 함수를 사용하여 입력값의 스펙트로그램 파워 스펙트럼 P(t,f)를 계산하고 이 스펙트럼을 시간-주파수 분포로 사용합니다.

    2. 다음을 사용하여 순시 주파수를 추정합니다.

      finst(t)=0fP(t,f)df0P(t,f)df.

  • 'Method''hilbert'로 설정된 경우 instfreq는 순시 주파수를 입력값의 해석적 신호의 위상의 도함수로 추정합니다. 이 함수는 다음을 수행합니다.

    1. hilbert 함수를 사용하여 입력값의 해석적 신호 xA를 계산합니다.

    2. 다음을 사용하여 순시 주파수를 추정합니다.

      finst(t)=12πdϕdt,

      여기서 ϕ는 입력값의 해석적 신호의 위상입니다.

참고 문헌

[1] Boashash, Boualem. “Estimating and Interpreting the Instantaneous Frequency of a Signal. I. Fundamentals.” Proceedings of the IEEE® 80, no. 4 (April 1992): 520–538. https://doi.org/10.1109/5.135376.

[2] Boashash, Boualem. "Estimating and Interpreting The Instantaneous Frequency of a Signal. II. Algorithms and Applications." Proceedings of the IEEE 80, no. 4 (May 1992): 540–568. https://doi.org/10.1109/5.135378.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2018a에 개발됨

모두 확장

참고 항목

| | | (Predictive Maintenance Toolbox) | (Predictive Maintenance Toolbox) | (Predictive Maintenance Toolbox)