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

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

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

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

Пилообразная функция генерирует пилообразную волну с peaks в +/-1 и период 2*pi. Дополнительный параметр ширины задает дробное кратное 2*pi, в котором происходит максимум сигнала.

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

Чтобы сгенерировать 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')

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

Чтобы сгенерировать треугольные, прямоугольные и Гауссовы импульсы, тулбокс предлагает 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);
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.

Сгенерируйте Гауссов импульс РФ на 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);
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')

Формы волны развернутой частоты

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

Сгенерируйте линейный щебет:

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

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

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

Сгенерируйте выпуклый квадратичный щебет.

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

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

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

Сгенерируйте 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);

Постройте спектрограммы сгенерированных сигналов:

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

Импульсный train

Чтобы сгенерировать импульсный train, мы можем использовать функцию 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 кГц, и импульсная длина train составляет 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);
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')