Main Content

신호 생성과 시각화

이 예제에서는 Signal Processing Toolbox™의 함수를 사용하여 널리 사용되는 주기 파형과 비주기 파형, 스윕 주파수 정현파 및 펄스 열을 생성하는 방법을 보여줍니다.

주기 파형

MATLAB®의 sincos 함수 외에도 Signal Processing Toolbox™에서는 sawtooth, square와 같은 주기 신호를 생성하는 다른 함수도 제공합니다.

sawtooth 함수는 ±1에서 피크이고 주기가 2π인 톱니파를 생성합니다. 선택 사항인 폭 파라미터는 신호 최댓값이 발생하는, 2π의 소수 배수를 지정합니다.

square 함수는 주기가 2π인 구형파를 생성합니다. 옵션 파라미터는 신호가 양이 되는 주기의 비율인 듀티 사이클을 지정합니다.

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")

Figure contains 2 axes objects. Axes object 1 with title Sawtooth Periodic Wave, xlabel Time (sec), ylabel Amplitude contains an object of type line. Axes object 2 with title Square Periodic Wave, xlabel Time (sec), ylabel Amplitude contains an object of type line.

비주기 파형

삼각 펄스, 사각 펄스, 가우스 펄스를 생성할 수 있도록 이 툴박스에서는 함수 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")

Figure contains 2 axes objects. Axes object 1 with title Triangular Aperiodic Pulse, xlabel Time (sec), ylabel Amplitude contains an object of type line. Axes object 2 with title Rectangular Aperiodic Pulse, xlabel Time (sec), ylabel Amplitude contains an object of type line.

gauspuls 함수는 지정된 시간, 중심 주파수, 비대역폭을 사용하여 가우스 변조된 정현파 펄스를 생성합니다.

sinc 함수는 입력 벡터 또는 행렬에 대한 수학적 sinc 함수를 계산합니다. sinc 함수는 폭이 2π이고 단위 높이를 사용하는 사각 펄스의 연속 푸리에 역변환입니다.

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")

Figure contains 2 axes objects. Axes object 1 with title Gaussian Pulse, xlabel Time (ms), ylabel Amplitude contains an object of type line. Axes object 2 with title Sinc Function, xlabel Time (sec), ylabel Amplitude contains an object of type line.

스윕 주파수 파형

이 툴박스에서는 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")

Figure contains 2 axes objects. Axes object 1 with title Linear Chirp, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image. Axes object 2 with title Quadratic Chirp, xlabel Time (s), ylabel Frequency (Hz) contains an object of type image.

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")

Figure contains 2 axes objects. Axes object 1 with title Convex Chirp, xlabel Time (ms), ylabel Frequency (Hz) contains an object of type image. Axes object 2 with title Concave Chirp, xlabel Time (ms), ylabel Frequency (Hz) contains an object of type image.

또 다른 함수 생성기로는 입력 벡터에 의해 결정된 주파수로 진동하는 신호를 생성하는 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")

Figure contains 2 axes objects. Axes object 1 with title VCO Triangle, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image. Axes object 2 with title VCO Rectangle, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image.

펄스 열

펄스 열을 생성하려면 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")

Figure contains 2 axes objects. Axes object 1 with title Rectangular Train, xlabel Time (ns), ylabel Amplitude contains an object of type line. Axes object 2 with title Gaussian Pulse Train, xlabel Time (ms), ylabel Amplitude contains an object of type line.

참고 항목

| | | | | | | | |