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

신호 생성과 시각화

이 예제에서는 Signal Processing Toolbox™에서 널리 사용되는 주기 파형과 비주기 파형, 시퀀스(임펄스, 계단, 램프), 다중채널 신호, 펄스 열, sinc 함수 및 디리클레 함수를 생성하는 방법을 보여줍니다.

주기 파형

MATLAB®의 sin 함수 및 cos 함수 외에도 이 툴박스에서는 톱니파 및 구형파 같은 주기 신호를 생성하는 다른 함수도 제공합니다.

sawtooth 함수는 피크가 +/- 1이고 주기가 2*pi인 톱니파를 생성합니다. 옵션인 폭 파라미터는 신호의 최댓값이 발생하는, 2*pi의 소수 배수를 지정합니다.

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

10kHz의 샘플 레이트를 사용하여 1.5초간의 50Hz 톱니파(Sawtooth Periodic Wave)와 구형파(Square Periodic Wave)를 각각 생성하려면 다음을 사용하십시오.

fs = 10000;
t = 0:1/fs:1.5;
x1 = sawtooth(2*pi*50*t);
x2 = square(2*pi*50*t);
subplot(2,1,1)
plot(t,x1)
axis([0 0.2 -1.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude') 
title('Sawtooth Periodic Wave')
subplot(2,1,2)
plot(t,x2)
axis([0 0.2 -1.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Square Periodic Wave')

비주기 파형

삼각 펄스, 사각 펄스, 가우스 펄스(Gaussian Pulse)를 생성할 수 있도록 이 툴박스에서는 함수 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);
subplot(2,1,1)
plot(t,x1)
axis([-0.1 0.1 -0.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Triangular Aperiodic Pulse')
subplot(2,1,2)
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 함수는 폭이 2*pi이고 높이가 1인 사각 펄스의 연속 역 푸리에 변환입니다.

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);
subplot(2,1,1)
plot(t1*1e3,y1)
xlabel('Time (ms)')
ylabel('Amplitude')
title('Gaussian Pulse')
subplot(2,1,2)
plot(t2,y2)
xlabel('Time (sec)')
ylabel('Amplitude')
title('Sinc Function')

변형 주파수 파형

이 툴박스에서는 chirp 함수와 같은 변형 주파수 파형을 생성하는 함수도 제공합니다. 두 개의 옵션 파라미터는 대체 스윕 방법과 초기 위상(단위: 도)을 지정합니다. 아래에 chirp 함수를 사용하여 선형 처프 또는 2차 처프, 볼록 2차 처프와 오목 2차 처프를 생성하는 여러 예제가 나와 있습니다.

선형 처프를 생성합니다.

t = 0:0.001:2;                 % 2 secs @ 1kHz sample rate
ylin = chirp(t,0,1,150);       % Start @ DC, cross 150Hz at t=1sec

2차 처프를 생성합니다.

t = -2:0.001:2;                % +/-2 secs @ 1kHz sample rate
yq = chirp(t,100,1,200,'q');   % Start @ 100Hz, cross 200Hz at t=1sec

스펙트로그램을 계산하고 표시합니다.

subplot(2,1,1)
spectrogram(ylin,256,250,256,1E3,'yaxis')
title('Linear Chirp')
subplot(2,1,2)
spectrogram(yq,128,120,128,1E3,'yaxis')
title('Quadratic Chirp')

볼록 2차 처프를 생성합니다.

t = -1:0.001:1;                % +/-1 second @ 1kHz sample rate
fo = 100;
f1 = 400;                % Start at 100Hz, go up to 400Hz
ycx = chirp(t,fo,1,f1,'q',[],'convex');

오목 2차 처프를 생성합니다.

t = -1:0.001:1;                % +/-1 second @ 1kHz sample rate
fo = 400;
f1 = 100;                % Start at 400Hz, go down to 100Hz
ycv = chirp(t,fo,1,f1,'q',[],'concave');

스펙트로그램을 계산하고 표시합니다.

subplot(2,1,1)
spectrogram(ycx,256,255,128,1000,'yaxis')
title('Convex Chirp')
subplot(2,1,2)
spectrogram(ycv,256,255,128,1000,'yaxis')
title('Concave Chirp')

또 다른 함수 생성기로는 입력 벡터에 의해 결정된 주파수에서 진동하는 신호를 생성하는 vco(전압 제어 발진기)가 있습니다. 삼각파 및 사각파 입력값에서 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);

생성된 신호의 스펙트로그램을 플로팅합니다.

subplot(2,1,1)
spectrogram(x1,kaiser(256,5),220,512,fs,'yaxis')
title('VCO Triangle')
subplot(2,1,2)
spectrogram(x2,256,255,256,fs,'yaxis')
title('VCO Rectangle')

펄스 열

pulstran 함수를 사용하여 펄스 열을 생성할 수 있습니다. 아래에 이 함수를 사용하는 방법에 대한 두 가지 예제가 나와 있습니다.

속도 100GHz, 간격 7.5nS로 샘플링된 2GHz 사각 펄스 열을 생성합니다.

fs = 100E9;                    % sample freq
D = [2.5 10 17.5]' * 1e-9;     % pulse delay times
t = 0 : 1/fs : 2500/fs;        % signal evaluation time
w = 1e-9;                      % width of each pulse
yp = pulstran(t,D,@rectpuls,w);

10kHz에서 50%의 대역폭을 갖는 주기성 가우스 펄스 신호를 생성합니다. 펄스 반복 주파수는 1kHz이고, 샘플 레이트는 50kHz이며, 펄스 열 길이는 10msec입니다. 반복 진폭은 매회 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);
subplot(2,1,1)
plot(t*1e9,yp);
axis([0 25 -0.2 1.2])
xlabel('Time (ns)')
ylabel('Amplitude')
title('Rectangular Train')
subplot(2,1,2)
plot(T*1e3,Y)
xlabel('Time (ms)')
ylabel('Amplitude')
title('Gaussian Pulse Train')