신호 생성과 시각화
이 예제에서는 Signal Processing Toolbox™의 함수를 사용하여 널리 사용되는 주기 파형과 비주기 파형, 스윕 주파수 정현파 및 펄스 열을 생성하는 방법을 보여줍니다.
주기 파형
MATLAB®의 sin
및 cos
함수 외에도 Signal Processing Toolbox™에서는 sawtooth
, square
와 같은 주기 신호를 생성하는 다른 함수도 제공합니다.
sawtooth
함수는 에서 피크이고 주기가 인 톱니파를 생성합니다. 선택 사항인 폭 파라미터는 신호 최댓값이 발생하는, 의 소수 배수를 지정합니다.
square
함수는 주기가 인 구형파를 생성합니다. 옵션 파라미터는 신호가 양이 되는 주기의 비율인 듀티 사이클을 지정합니다.
10kHz의 샘플 레이트를 사용하여 1.5초간의 50Hz 톱니파를 생성합니다. 계산을 반복하여 구형파를 생성합니다.
fs = 10000; t = 0:1/fs:1.5; x1 = sawtooth(2*pi*50*t); x2 = square(2*pi*50*t); nexttile plot(t,x1) axis([0 0.2 -1.2 1.2]) xlabel("Time (sec)") ylabel("Amplitude") title("Sawtooth Periodic Wave") nexttile plot(t,x2) axis([0 0.2 -1.2 1.2]) xlabel("Time (sec)") ylabel("Amplitude") title("Square Periodic Wave")
비주기 파형
삼각 펄스, 사각 펄스, 가우스 펄스를 생성할 수 있도록 이 툴박스에서는 함수 tripuls
, rectpuls
, gauspuls
를 제공합니다.
tripuls
함수는 디폴트 폭 1을 사용하여 중심 t = 0에 중심을 두는 높이 1의 샘플링된 비주기 삼각 펄스를 생성합니다.
rectpuls
함수는 디폴트 폭 1을 사용하여 t = 0에 중심을 두는 높이 1의 샘플링된 비주기 사각 펄스를 생성합니다. 진폭이 0이 아닌 구간은 오른쪽이 열려 있도록 정의됩니다. 즉, rectpuls(-0.5) = 1
인 반면 rectpuls(0.5) = 0
이 됩니다.
10kHz의 샘플 레이트와 20ms의 폭을 사용하여 2초간의 삼각 펄스를 생성합니다. 계산을 반복하여 사각 펄스를 생성합니다.
fs = 10000; t = -1:1/fs:1; x1 = tripuls(t,20e-3); x2 = rectpuls(t,20e-3); figure nexttile plot(t,x1) axis([-0.1 0.1 -0.2 1.2]) xlabel("Time (sec)") ylabel("Amplitude") title("Triangular Aperiodic Pulse") nexttile plot(t,x2) axis([-0.1 0.1 -0.2 1.2]) xlabel("Time (sec)") ylabel("Amplitude") title("Rectangular Aperiodic Pulse")
gauspuls
함수는 지정된 시간, 중심 주파수, 비대역폭을 사용하여 가우스 변조된 정현파 펄스를 생성합니다.
sinc
함수는 입력 벡터 또는 행렬에 대한 수학적 sinc 함수를 계산합니다. sinc 함수는 폭이 이고 단위 높이를 사용하는 사각 펄스의 연속 푸리에 역변환입니다.
1MHz의 레이트로 샘플링되고 60%의 대역폭을 갖는 50kHz 가우스 RF 펄스를 생성합니다. 포락선이 피크에서 40dB 아래로 떨어지는 위치에서 펄스를 자릅니다.
tc = gauspuls("cutoff",50e3,0.6,[],-40);
t1 = -tc : 1e-6 : tc;
y1 = gauspuls(t1,50e3,0.6);
선형 간격의 벡터에 대한 sinc 함수를 생성합니다.
t2 = linspace(-5,5); y2 = sinc(t2); figure nexttile plot(t1*1e3,y1) xlabel("Time (ms)") ylabel("Amplitude") title("Gaussian Pulse") nexttile plot(t2,y2) xlabel("Time (sec)") ylabel("Amplitude") title("Sinc Function")
스윕 주파수 파형
이 툴박스에서는 chirp
함수와 같은 스윕 주파수 파형을 생성하는 함수도 제공합니다. 두 개의 옵션 파라미터는 대체 스윕 방법과 초기 위상(단위: 도)을 지정합니다. 아래에 chirp
함수를 사용하여 선형 처프 또는 2차 처프, 볼록 2차 처프와 오목 2차 처프를 생성하는 여러 예제가 나와 있습니다.
2초 동안 1kHz로 샘플링된 선형 처프를 생성합니다. 순시 주파수는 t = 0 지점에서는 100Hz이고 t = 1초 지점에서는 250Hz를 넘어섭니다.
tlin = 0:0.001:2; ylin = chirp(tlin,100,1,250);
4초 동안 1kHz로 샘플링된 2차 처프를 생성합니다. 순시 주파수는 t = 0 지점에서는 100Hz이고 t = 1초 지점에서는 200Hz를 넘어섭니다.
tq = -2:0.001:2;
yq = chirp(tq,100,1,200,"quadratic");
처프의 스펙트로그램을 계산하고 표시합니다.
figure nexttile pspectrum(ylin,tlin,"spectrogram", ... Leakage=0.85,TimeResolution=0.1,OverlapPercent=99) title("Linear Chirp") nexttile pspectrum(yq,tq,"spectrogram", ... Leakage=0.85,TimeResolution=0.1,OverlapPercent=99) title("Quadratic Chirp")
2초 동안 1kHz로 샘플링된 볼록 2차 처프를 생성합니다. 순시 주파수는 t = 0 지점에서는 100Hz이고 t = 1초 지점에서는 400Hz로 증가합니다.
tcx = -1:0.001:1; fo = 100; f1 = 400; ycx = chirp(tcx,fo,1,f1,"quadratic",[],"convex");
2초 동안 1kHz로 샘플링된 오목 2차 처프를 생성합니다. 순시 주파수는 t = 0 지점에서는 400Hz이고 t = 1초 지점에서는 100Hz로 감소합니다.
tcv = -1:0.001:1; fo = 400; f1 = 100; ycv = chirp(tcv,fo,1,f1,"quadratic",[],"concave");
처프의 스펙트로그램을 계산하고 표시합니다.
figure nexttile pspectrum(ycx,tcx,"spectrogram", ... Leakage=0.85,TimeResolution=0.1,OverlapPercent=99) title("Convex Chirp") nexttile pspectrum(ycv,tcv,"spectrogram", ... Leakage=0.85,TimeResolution=0.1,OverlapPercent=99) title("Concave Chirp")
또 다른 함수 생성기로는 입력 벡터에 의해 결정된 주파수로 진동하는 신호를 생성하는 vco
(전압 제어 발진기)가 있습니다. 입력 벡터는 삼각파, 사각파 또는 정현파 등일 수 있습니다.
순시 주파수가 삼각파인, 10kHz로 샘플링된 2초간의 신호를 생성합니다. 사각파에 대해 계산을 반복합니다.
fs = 10000; t = 0:1/fs:2; x1 = vco(sawtooth(2*pi*t,0.75),[0.1 0.4]*fs,fs); x2 = vco(square(2*pi*t),[0.1 0.4]*fs,fs);
생성된 신호의 스펙트로그램을 플로팅합니다.
figure nexttile pspectrum(x1,t,"spectrogram", ... Leakage=0.9,FrequencyResolution=55) title("VCO Triangle") nexttile pspectrum(x2,t,"spectrogram", ... Leakage=0.9,FrequencyResolution=55) title("VCO Rectangle")
펄스 열
펄스 열을 생성하려면 pulstran
함수를 사용할 수 있습니다.
속도 100GHz, 간격 7.5ns로 샘플링된 1ns 사각 펄스 열을 생성합니다.
fs = 100e9; D = [2.5 10 17.5]' * 1e-9; t = 0 : 1/fs : 2500/fs; w = 1e-9; yp = pulstran(t,D,@rectpuls,w);
10kHz에서 50%의 대역폭을 갖는 주기성 가우스 펄스 신호를 생성합니다. 펄스 반복 주파수는 1kHz이고, 샘플 레이트는 50kHz이며, 펄스 열 길이는 10밀리초입니다. 반복 진폭은 매회 0.8만큼씩 감쇠되어야 합니다. 함수 핸들을 사용하여 생성기 함수를 지정합니다.
T = 0 : 1/50e3 : 10e-3; D = [0 : 1/1e3 : 10e-3 ; 0.8.^(0:10)]'; Y = pulstran(T,D,@gauspuls,10e3,.5); figure nexttile plot(t*1e9,yp) axis([0 25 -0.2 1.2]) xlabel("Time (ns)") ylabel("Amplitude") title("Rectangular Train") nexttile plot(T*1e3,Y) xlabel("Time (ms)") ylabel("Amplitude") title("Gaussian Pulse Train")
참고 항목
chirp
| gauspuls
| pulstran
| rectpuls
| sawtooth
| sin
| sinc
| square
| tripuls
| vco