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

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

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

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

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

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

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

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

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

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

Смотрите также

| | | | | | | | |

Для просмотра документации необходимо авторизоваться на сайте