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

Этот пример показывает, как сгенерировать широко используемые периодические и апериодические формы волны, синусоиды со свептом и последовательности импульсов с помощью функций, доступных в Signal Processing Toolbox™.

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

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

The sawtooth функция генерирует пилообразную волну с peaks ±1 и период 2π. Необязательный параметр ширины задает дробное кратное 2π при котором происходит максимальное значение сигнала.

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

Сгенерируйте 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 функций.

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

The 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.

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

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

Сгенерируйте Гауссов РЧ импульс частотой 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 функция.

Создайте train прямоугольных импульсов на 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.

См. также

| | | | | | | | |