신호 분석기
여러 개의 신호와 스펙트럼을 시각화하여 비교
설명
신호 분석기 앱은 시간 영역, 주파수 영역 및 시간-주파수 영역에서 신호를 시각화하고 전처리하고 측정하고 분석하고 비교할 수 있는 대화형 방식 툴입니다. 이 앱을 사용하여 다음을 수행할 수 있습니다.
MATLAB® 작업 공간에 있는 모든 신호에 손쉽게 액세스하기
누락된 데이터 채우기 (R2024a 이후). 앱을 종료하지 않고 신호를 평활화, 필터링, 리샘플링, 추세 제거, 잡음 제거, 추출, 편집하기
사용자 지정 전처리 함수를 추가하고 적용하기
오디오 신호 재생하기 (R2024a 이후)
신호에 대한 여러 개의 파형, 스펙트럼, 지속성, 스펙트로그램 및 스케일로그램 표현을 동시에 시각화하고 비교하기
데이터 및 신호 통계량 측정하기
신호 분석기 앱에서는 기간이 각기 다른 여러 신호를 한번에 보며 동시에 작업할 수 있습니다.
자세한 내용은 신호 분석기 앱 사용하기를 참조하십시오.
자세히
스케일로그램 보기를 사용하고 신호에 웨이블릿 잡음 제거를 적용하려면 Wavelet Toolbox™ 라이선스가 필요합니다.
![](signalanalyzer_thumbnail_22a.png)
신호 분석기 앱 열기
MATLAB 툴스트립: 앱 탭의 신호 처리 및 통신에서 앱 아이콘을 클릭합니다.
MATLAB 명령 프롬프트:
signalAnalyzer
를 입력합니다.
예제
오디오 파일에서 누락된 데이터를 찾아서 채우기
로 샘플링된 음성 신호를 불러옵니다. 이 파일에는 "MATLAB®"이라는 단어를 발음한 여성의 음성이 들어 있습니다.
load mtlb
오디오 데이터의 70%가 누락된 상황을 시뮬레이션하기 위해 신호에 NaN
값을 무작위로 할당합니다.
rng(2024) numToReplace = round(length(mtlb) * 0.70); missing = randperm(length(mtlb), numToReplace); mtlbMissing = mtlb; mtlbMissing(missing) = NaN;
신호 분석기를 열고 작업 공간 브라우저에서 신호 테이블로 mtlb
와 mtlbMissing
을 끌어서 놓습니다. 분석기 탭에서 신호 테이블에 신호가 선택된 상태로 시간 값을 클릭하고 Sample Rate and Start Time
(샘플 레이트와 시작 시간)을 선택합니다. 샘플 레이트를 Fs
Hz로 지정하고 시작 시간을 0
초로 지정합니다. 그리드 표시를 클릭하여 2×2 디스플레이를 만듭니다. 왼쪽 디스플레이에는 mtlb
를 플로팅하고 오른쪽 디스플레이에는 mtlbMissing
을 플로팅합니다. mtlb
오디오 신호를 들으려면 해당 오디오 신호를 선택하고 표시 탭 아래에 있는 툴스트립의 재생 섹션에서 재생을 클릭하십시오. 신호를 반복하려면 재생 전에 반복 재생을 선택합니다.
누락된 데이터가 있는 신호를 선택하고 분석기 탭에서 전처리를 클릭하여 전처리 모드로 들어간 다음, 전처리 옵션 목록에서 Fill Missing
(누락값 채우기)을 선택합니다. 함수 파라미터 패널에서 Fill Missing
파라미터를 조정합니다. Autoregressive model
(자기회귀 모델)을 선택하고 적용을 클릭하여 누락된 신호를 채웁니다. 모두 적용을 클릭하여 전처리 결과를 저장하고 모드를 종료합니다. 다른 채우기 함수에 대한 자세한 내용은 fillmissing
및 fillgaps
항목을 참조하십시오.
이제 재생 버튼을 사용하여 채워진 신호를 재생할 수 있습니다. 스펙트로그램에서 누락된 데이터 채우기의 효과를 확인하려면 표시 탭에서 시간-주파수를 클릭합니다. 스펙트로그램 탭에서 시간 분해능을 20ms로 지정하고 인접 세그먼트 간의 중첩을 80
%로 지정합니다. 전력 제한을 –50
dB 및 –10
dB로 설정합니다. 왼쪽 디스플레이를 클릭하고 위 단계를 반복합니다.
다양한 윈도우 누설로 톤 분해하기
신호 분석기에서 분석 윈도우의 스펙트럼 누설을 조정하여 정현파를 분해할 수 있습니다.
2초 동안 100Hz로 샘플링된 2채널 신호를 생성합니다.
첫 번째 채널은 20Hz 톤과 21Hz 톤으로 구성되어 있습니다. 두 톤 모두 단위 진폭을 갖습니다.
두 번째 채널도 두 개의 톤으로 구성되어 있습니다. 한 톤은 단위 진폭과 20Hz 주파수를 갖습니다. 다른 톤은 1/100 진폭과 30Hz 주파수를 갖습니다.
fs = 100; t = (0:1/fs:2-1/fs)'; x = sin(2*pi*[20 20].*t)+[1 1/100].*sin(2*pi*[21 30].*t);
이 신호에 백색 잡음을 포함시킵니다. 40dB의 신호 대 잡음비를 지정합니다.
x = x + randn(size(x)).*std(x)/db2mag(40);
신호 분석기를 열고 신호를 플로팅합니다. 분석기 탭에서 신호 테이블에 신호가 선택된 상태로 시간 값을 클릭하고 Sample Rate and Start Time
을 선택합니다. 샘플 레이트를 fs
Hz로 지정하고 시작 시간을 0
초로 지정합니다. 표시 탭에서 스펙트럼을 클릭하여 디스플레이에 스펙트럼 플롯을 추가합니다.
스펙트럼 탭을 클릭합니다. 스펙트럼 누설을 조정하는 슬라이더는 중간 위치에 있으며, 이는 약 1.28Hz의 분해능 대역폭에 해당합니다. 첫 번째 채널의 두 톤은 분해되지 않습니다. 두 번째 채널의 30Hz 톤은 표시되기는 하지만 20Hz 톤과 비교하면 매우 약합니다.
분해능 대역폭이 약 0.83Hz가 되도록 누설을 늘립니다. 두 번째 채널의 약한 톤이 명확하게 분해됩니다.
슬라이더를 최댓값으로 이동합니다. 분해능 대역폭은 약 0.5Hz입니다. 첫 번째 채널의 두 톤이 분해됩니다. 두 번째 채널의 약한 톤은 큰 윈도우 사이드로브들에 가려집니다.
표시 탭을 클릭합니다. 수평 확대/축소를 사용하여 주파수 축을 확대합니다. 디스플레이에 두 개의 커서를 추가하고 주파수 영역 커서를 끌어서 놓아 톤의 주파수를 추정합니다.
다양한 윈도우를 사용하여 신호 스펙트럼 계산하기
전동 칫솔의 오디오 녹음을 MATLAB®으로 읽어 옵니다. 신호는 48kHz로 샘플링됩니다. 칫솔은 약 1.75초에 켜지고 약 2초 동안 켜져 있습니다.
[y,fs] = audioread("toothbrush.m4a");
신호 분석기를 열고 작업 공간 브라우저에서 신호 테이블로 신호를 끌어서 놓습니다. 신호 테이블에서 신호를 선택하고 분석기 탭에서 시간 값을 클릭하여 신호에 시간 정보를 추가합니다. 샘플 레이트와 시작 시간(Sample Rate and Start Time
)을 선택하고 샘플 레이트에 fs
를 입력합니다.
표시 탭에서 그리드 표시를 클릭하여 2×2 그리드 디스플레이를 만듭니다. 각 디스플레이를 선택한 후 스펙트럼을 클릭하여 스펙트럼 보기를 추가하고 시간을 클릭하여 시간 보기를 제거합니다. 신호를 4개의 디스플레이 모두로 각각 끌어옵니다.
스펙트럼 탭을 클릭하여 각 디스플레이의 스펙트럼 보기를 수정합니다.
왼쪽 상단 디스플레이를 클릭하여 선택합니다. 누설 슬라이더를 움직여서 누설 값을 32로 지정합니다.
오른쪽 상단 디스플레이를 클릭하여 선택합니다. 분해능 유형 섹션에서 윈도우 길이를 선택합니다. 윈도우 길이 섹션에서 지정을 선택하고 윈도우 길이를 샘플 1500개로 지정합니다. 윈도우 옵션 섹션에서 사각(
Rectangular
) 윈도우를 선택하고 중첩 백분율을 20으로 지정합니다.왼쪽 하단 디스플레이를 클릭하여 선택합니다. 분해능 유형 섹션에서 윈도우 길이를 선택합니다. 윈도우 길이 섹션에서 지정을 선택하고 윈도우 길이를 샘플 500개로 지정합니다. 윈도우 옵션 섹션에서 해밍(
Hamming
) 윈도우를 선택하고 중첩 백분율을 50으로 지정합니다. NFFT 섹션에서 이산 푸리에 변환 점을 550개로 지정합니다.오른쪽 하단 디스플레이를 클릭하여 선택합니다. 분해능 유형 섹션에서 윈도우 길이를 선택합니다. 윈도우 길이 섹션에서 지정을 선택하고 윈도우 길이를 샘플 5000개로 지정합니다. 윈도우 옵션 섹션에서 체비쇼프(
Chebyshev
) 윈도우를 선택하고 사이드로브 감쇠량을 50dB로, 중첩 백분율을 90으로 지정합니다.
일부 보기에서는 분해능이 높지만 누설이 높은 반면, 다른 보기에서는 누설이 낮지만 분해능이 저하되는 것을 알 수 있습니다.
관련 예제
- Extract Voices from Music Signal
- Modulation and Demodulation Using Complex Envelope
- Find and Track Ridges Using Reassigned Spectrogram
- Declip Saturated Signals Using Your Own Function
- Compute Envelope Spectrum of Vibration Signal
- 상관된 신호 사이의 지연 구하기
- Find Interference Using Persistence Spectrum
- Denoise Noisy Doppler Signal
- Resample and Filter a Nonuniformly Sampled Signal
- 흰긴수염고래 노래에서 관심 영역 추출하기
프로그래밍 방식으로 사용
signalAnalyzer
signalAnalyzer
는 신호 분석기 앱을 엽니다.
signalAnalyzer(sig
)
sig
)signalAnalyzer(
는 신호 분석기 앱을 열고 신호 sig
)sig
를 가져와 플로팅합니다. 앱이 이미 열려 있으면 이 함수는 현재 디스플레이에 sig
를 플로팅합니다. 이미 플로팅된 sig
가 변경되었다면 함수 호출 시 해당 플롯이 업데이트됩니다.
sig
는 작업 공간의 변수이거나 MATLAB 표현식일 수 있습니다. sig
는 다음일 수 있습니다.
각 열이 독립 신호인 벡터 또는 행렬.
duration형으로 지정된 시간 값이 있는
timetable
.timeseries
객체.
자세한 내용은 Data Types Supported by Signal Analyzer 항목을 참조하십시오.
기본적으로 앱은 신호를 샘플 인덱스 함수로 플로팅합니다. 시간 정보를 제공하거나 신호에 내재된 시간 정보가 있는 경우 앱은 신호를 시간 함수로 플로팅합니다.
signalAnalyzer(sig1,...,sigN
)
sig1,...,sigN
)signalAnalyzer(
은 N개의 신호 벡터 또는 행렬을 가져와서 현재 디스플레이에 플로팅합니다. 앱은 내재된 시간 정보가 있는 신호와 내재된 시간 정보가 없는 신호를 동일한 함수 호출에서 가져올 수 없습니다.sig1,...,sigN
)
signalAnalyzer(___,'SampleRate',fs
)
fs
)signalAnalyzer(___,'SampleRate',
는 샘플 레이트 fs
)fs
를 양의 스칼라(단위: Hz)로 지정합니다. 앱은 시작 시간을 0으로 가정한 상태에서 샘플 레이트를 사용하여 시간에 대해 하나 이상의 신호를 플로팅합니다. 내재된 시간 정보가 없는 신호에 대해 샘플 레이트를 지정할 수 있습니다.
signalAnalyzer(___,'SampleTime',ts
)
ts
)signalAnalyzer(___,'SampleTime',
는 샘플 시간 ts
)ts
를 양의 스칼라(단위: 초)로 지정합니다. 앱은 시작 시간을 0으로 가정한 상태에서 샘플 시간을 사용하여 시간에 대해 하나 이상의 신호를 플로팅합니다. 내재된 시간 정보가 없는 신호에 대해 샘플 시간을 지정할 수 있습니다.
signalAnalyzer(___,'StartTime',st
)
st
)signalAnalyzer(___,'StartTime',
는 신호 시작 시간 st
)st
를 스칼라(단위: 초)로 지정합니다. 샘플 레이트 또는 샘플 시간을 지정하지 않으면, 앱은 샘플 레이트를 1Hz로 가정합니다. 내재된 시간 정보가 없는 신호에 대한 시작 시간을 지정할 수 있습니다.
signalAnalyzer(___,'TimeValues',tv
)
tv
)signalAnalyzer(___,'TimeValues',
는 데이터 점에 해당하는 시간 값을 갖는 벡터 tv
)tv
를 지정합니다. tv
는 초를 단위로 하는 값을 갖는 실수 숫자형 벡터일 수 있습니다. tv
는 duration
형 배열일 수도 있습니다. tv
의 값은 고유해야 하고 NaN
일 수 없지만 간격이 균일할 필요는 없습니다. 모든 입력 신호는 tv
와 길이가 동일해야 합니다. 내재된 시간 정보가 없는 신호에 대해 시간 값으로 구성된 벡터를 지정할 수 있습니다.
불균일하게 샘플링된 신호는 필터링과 스케일로그램 보기에 사용할 수 없습니다.
버전 내역
R2016a에 개발됨R2024a: 누락된 데이터를 찾아서 채움
신호 분석기 앱에서 데이터의 빈 자리를 찾아서 채우는 신호 전처리를 수행합니다. 누락된 데이터를 상수 값, 인접한 샘플 값의 조합 또는 이동평균 값으로 채울 수 있습니다. 보간을 수행하거나 자기회귀 모델을 적용할 수도 있습니다.
R2024a: 오디오 신호 재생
신호 분석기 앱에서 오디오 재생 컨트롤로 오디오 신호를 재생할 수 있습니다.
R2023b: 더 많은 유형의 스펙트럼을 계산하고 비교함
신호 분석기에서 스펙트럼 계산을 더 유연하게 수행할 수 있습니다. 윈도우 길이, 이산 푸리에 변환 점의 개수, 분해능 대역폭을 제어할 수 있습니다.
R2023a: 신호 피크를 찾고 주석을 추가함
시간 영역 신호에 대한 피크 측정을 수행합니다. 측정값 테이블에서 신호 피크 값을 확인하고 디스플레이에서 주석이 달린 마커로 표시합니다.
R2020a: 신호 분석기에서 레이블 버튼이 제거됨
신호 분석기는 더 이상 신호 레이블 지정기를 열지 않습니다. 신호 레이블 지정기는 이제 하나의 앱으로 제공됩니다. 신호에 레이블을 지정하려면 MATLAB 툴스트립 또는 명령 창에서 신호 레이블 지정기를 여십시오.
참고 항목
앱
함수
도움말 항목
- Time-Frequency Gallery
- 신호 분석기 앱 사용하기
- Edit Sample Rate and Other Time Information
- Data Types Supported by Signal Analyzer
- Spectrum Computation in Signal Analyzer
- Persistence Spectrum in Signal Analyzer
- 신호 분석기의 스펙트로그램 계산
- Scalogram Computation in Signal Analyzer
- Keyboard Shortcuts for Signal Analyzer
- Signal Analyzer Tips and Limitations
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)