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