exponenta event banner

Генерация и визуализация сигналов

В этом примере показано, как генерировать широко используемые периодические и апериодические сигналы, синусоиды со сдвигаемой частотой и последовательности импульсов, используя функции, доступные в Toolbox™ обработки сигналов.

Периодические формы сигналов

В дополнение к sin и cos функции в MATLAB ®, Toolbox™ обработки сигналов предлагает другие функции, такие какsawtooth и square, которые производят периодические сигналы.

sawtooth функция генерирует пилообразную волну с пиками в ± 1 и периодом . Необязательный параметр width задает дробное кратное , при котором происходит максимум сигнала.

square функция генерирует квадратную волну с периодом . Необязательный параметр определяет рабочий цикл, процент периода, в течение которого сигнал является положительным.

Генерируют 1,5 секунды пилообразной волны 50 Гц с частотой выборки 10 кГц. Повторите вычисления для квадратной волны.

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

Figure contains 2 axes. Axes 1 with title Sawtooth Periodic Wave contains an object of type line. Axes 2 with title Square Periodic Wave contains an object of type line.

Апериодические формы волн

Для генерации треугольных, прямоугольных и гауссовых импульсов инструментарий предлагает tripuls, rectpuls, и gauspuls функции.

tripuls функция генерирует дискретизированный апериодический треугольный импульс единичной высоты с центром около t = 0 и шириной по умолчанию 1.

rectpuls функция генерирует дискретизированный апериодический прямоугольный импульс единичной высоты, центрированный относительно t = 0 и имеющий ширину по умолчанию 1. Интервал ненулевой амплитуды определяется открытым справа: rectpuls(-0.5) = 1 в то время как rectpuls(0.5) = 0.

Создайте 2 секунды треугольного импульса с частотой дискретизации 10 кГц и шириной 20 мс Повторите вычисления для прямоугольного импульса.

fs = 10000;
t = -1:1/fs:1;
x1 = tripuls(t,20e-3);
x2 = rectpuls(t,20e-3);

figure
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')

Figure contains 2 axes. Axes 1 with title Triangular Aperiodic Pulse contains an object of type line. Axes 2 with title Rectangular Aperiodic Pulse contains an object of type line.

gauspuls функция генерирует синусоидальный импульс, модулированный Гауссом, с заданным временем, центральной частотой и дробной полосой пропускания.

sinc функция вычисляет математическую функцию sinc для входного вектора или матрицы. Функция sinc - это непрерывное обратное преобразование Фурье прямоугольного импульса ширины и высоты единицы измерения.

Генерация гауссова высокочастотного импульса частотой 50 кГц с шириной полосы 60%, дискретизированного со скоростью 1 МГц. Усечь импульс, в котором огибающая падает на 40 дБ ниже пика.

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

Figure contains 2 axes. Axes 1 with title Gaussian Pulse contains an object of type line. Axes 2 with title Sinc Function contains an object of type line.

Формы сигналов со сдвигаемой частотой

Панель инструментов также предоставляет функции для генерации сигналов со сдвигаемой частотой, такие как chirp функция. Два дополнительных параметра определяют альтернативные методы сдвига и начальную фазу в градусах. Ниже приведены несколько примеров использования chirp функция для генерации линейных или квадратичных, выпуклых и вогнутых квадратичных чирпов.

Создайте линейную чирпу.

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

Создайте квадратичную чирп.

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

Вычислите и отобразите спектрограммы чирпов.

figure
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')

Figure contains 2 axes. Axes 1 with title Linear Chirp contains an object of type image. Axes 2 with title Quadratic Chirp contains an object of type image.

Создайте выпуклую квадратичную чирпу.

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');

Создайте вогнутую квадратичную чирпу.

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');

Вычислите и отобразите спектрограммы чирпов.

figure
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')

Figure contains 2 axes. Axes 1 with title Convex Chirp contains an object of type image. Axes 2 with title Concave Chirp contains an object of type image.

Другой функциональный генератор - vco (генератор, управляемый напряжением), который генерирует сигнал, колеблющийся на частоте, определяемой входным вектором. Входной вектор может быть треугольником, прямоугольником или синусоидой, среди прочих возможностей.

Создайте 2 секунды сигнала, дискретизированного с частотой 10 кГц, мгновенной частотой которого является треугольник. Повторите вычисления для прямоугольника.

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

Figure contains 2 axes. Axes 1 with title VCO Triangle contains an object of type image. Axes 2 with title VCO Rectangle contains an object of type image.

Импульсные каналы

Для генерации последовательностей импульсов можно использовать pulstran функция.

Построить последовательность прямоугольных импульсов 2 ГГц, отобранных со скоростью 100 ГГц с интервалом 7,5 нс.

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

Генерация периодического гауссова импульсного сигнала на частоте 10 кГц с шириной полосы 50%. Частота повторения импульсов составляет 1 кГц, частота дискретизации - 50 кГц, а длина последовательности импульсов - 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
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')

Figure contains 2 axes. Axes 1 with title Rectangular Train contains an object of type line. Axes 2 with title Gaussian Pulse Train contains an object of type line.

См. также

| | | | | | | | |