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

В этом примере показано, как сгенерировать широко используемые периодические и апериодические формы волны, синусоиды развернутой частоты и последовательности импульсов с помощью функций, доступных в 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')

Figure contains 2 axes objects. Axes object 1 with title Sawtooth Periodic Wave contains an object of type line. Axes object 2 with title Square Periodic Wave contains an object of type line.

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

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

Figure contains 2 axes objects. Axes object 1 with title Triangular Aperiodic Pulse contains an object of type line. Axes object 2 with title Rectangular Aperiodic Pulse contains an object of type line.

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

Figure contains 2 axes objects. Axes object 1 with title Gaussian Pulse contains an object of type line. Axes object 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 objects. Axes object 1 with title Linear Chirp contains an object of type image. Axes object 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 objects. Axes object 1 with title Convex Chirp contains an object of type image. Axes object 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 objects. Axes object 1 with title VCO Triangle contains an object of type image. Axes object 2 with title VCO Rectangle contains an object of type image.

Последовательности импульсов

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

Figure contains 2 axes objects. Axes object 1 with title Rectangular Train contains an object of type line. Axes object 2 with title Gaussian Pulse Train contains an object of type line.

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

| | | | | | | | |