В этом примере показано, как генерировать широко используемые периодические и апериодические сигналы, синусоиды со сдвигаемой частотой и последовательности импульсов, используя функции, доступные в Toolbox™ обработки сигналов.
В дополнение к sin и cos функции в MATLAB ®, Toolbox™ обработки сигналов предлагает другие функции, такие какsawtooth и square, которые производят периодические сигналы.
sawtooth функция генерирует пилообразную волну с пиками в 1 и периодом 2δ. Необязательный параметр width задает дробное кратное 2δ, при котором происходит максимум сигнала.
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')

Для генерации треугольных, прямоугольных и гауссовых импульсов инструментарий предлагает 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')

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

Панель инструментов также предоставляет функции для генерации сигналов со сдвигаемой частотой, такие как 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')

Создайте выпуклую квадратичную чирпу.
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')

Другой функциональный генератор - 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')

Для генерации последовательностей импульсов можно использовать 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')

chirp | gauspuls | pulstran | rectpuls | sawtooth | sin | sinc | square | tripuls | vco