ЛР3 > Сигналы и их свойства. Генерация сигналов в среде MatLab - FPGA

ЛР3 > Сигналы и их свойства. Генерация сигналов в среде MatLab

Цель работы: научиться создавать различные типы сигналов и визуализировать их.

Руководство по лабораторной работе

 

Для выполнения лабораторной работы Вам необходимо повторить соответствующие лекции.

Скачать Материалы к лабораторной работе №3.

 

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Гармонические сигналы и их комбинации в среде MatLab создаются с помощью функций Sin(x) и Cos(x). Следующий пример демонстрирует сигнал, представляющий собой сумму двух синусоид – 3Гц с амплитудой 1 В и 40 Гц с амплитудой 0,25 В. Сигнал сформирован для интервала времени от 0 до 1 с, частота дискретизации – 100 Гц.

                            Пример № 1.

 

fs = 100; %частота дискретизации 100 Гц

t = 0:1/fs:1; %интервал времени от 0 до 1 сек

x = sin(2*pi*t*3) + .25*sin(2*pi*t*40);%сумма гармоник

plot(t,x);

grid on

 

 

Результат работы программы представлен на рисунке 1.

Рисунок 1. Результат работы программы из примера № 1.

 

Следующий пример демонстрирует генерацию гармонического сигнала с частотой 1 КГц (частота дискретизации – 8 КГц), амплитуда которого изменяется по экспоненциальному закону. Начальная амплитуда сигнала – 2 В, начальная фаза сигнала – 450. В примере показаны различные способы визуализации сигнала (посмотрите документацию для следующих команд – subplot, plot, stem, stairs).

 

Пример № 2.

Fs = 8e3; %частота дискретизации 8 КГц

t = 0:1/Fs:1; %1 секунда дискретных моментов времени

t = t’; %преобразование строки в столбец

A = 2; %амплитуда – 2 В

f0 = 1e3; %частота – 1 КГц

phi = pi/4; %начальная фаза – 45 град

s1 = A*cos(2*pi*f0*t+phi); %гармонический сигнал

alpha = 1e3; %скорость затухания экспоненты

s2 = exp(-alpha*t).*s1; %затухающая синусоида

subplot(2,2,1); plot(s2(1:100))

subplot(2,2,2); plot(s2(1:100), ‘.’)

subplot(2,2,3); stem(s2(1:100))

subplot(2,2,4); stairs(s2(1:100))

 

Результат работы программы представлен на рисунке 2.

 

Рисунок № 2. Результат работы программы из примера № 2.

 

Для генерации одиночных импульсов в среде MatLab имеются встроенные функции:
rectpuls – прямоугольный импульс;
tripuls – треугольный импульс;
sinc – импульс вида sin(πt)/ (πt);
gausplus – радиоимпульс с гауссовой огибающей;
pulstran – последовательность из конечного числа импульсов произвольной формы.

Рассмотрим несколько примеров с использованием данных функций.

Функция rectpuls формирует одиночный прямоугольный импульс с единичной амплитудой. Формат вызова данной функции следующий:
y = rectpuls (t, width), где
t – вектор значений времени, width – ширина (длительность) импульса.

В качестве следующего примера рассмотрим генерацию одиночного отрицательного импульса, длительностью 20 мс и амплитудой – минус 5 В (пример № 3):
Пример № 3.

Fs=1e3;

t=-40e-3:1/Fs:40e-3;

T=20e-3;

A=5;

s=-A*rectpuls(t,T);

plot(t,s);

ylim([-6 6]);

 

 

Функция tripuls формирует одиночный треугольный импульс с единичной амплитудой. Формат вызова данной функции следующий:
y = rectpuls (t, width, skew), где
t – вектор значений времени, width – ширина (длительность) импульса, skew – коэффициент асимметрии импульса, определяющий положение его вершины. Пик импульса расположен при t = width*skew/2 . Параметр skew должен лежать в диапазоне от -1 до 1.

В качестве следующего примера рассмотрим генерацию одиночного треугольного импульса, длительностью 60 мс, амплитудой 10 В и смещением вершины на 15 мс (пример № 4).

Пример № 4
Fs = 1e3; %частота дискретизации

t = -50e-3:1/Fs:50e-3; %дискретное время

A = 10; %амплитуда

T1 = 0.5; %смещение вершины

T2 = 60e-3; %нижнее основание

s = A*tripuls(t,T2,T1);% генерация импульса

plot(t,s)

grid on

Функция gausplus формирует одиночный радиоимпульс с гауссовой огибающей и единичной амплитудой. Формат вызова данной функции следующий:

y = gauspuls(t, fc, bw, bwr), где

t – вектор значений времени, fc – несущая частота в Гц, bw – относительная ширина спектра (ширина спектра, деленная на несущую частоту), bwr – уровень (в децибелах), по которому производится измерение ширины спектра.

В качестве примера рассмотрим генерацию одиночного радиоимпульса с несущей частотой = 4 КГц, шириной спектра = 400 Гц, амплитудой = 1 В, уровнем измерения ширины спектра = – 20 дБ (пример № 5).

Пример № 5.

Fs = 16e3;% частота дискретизации 16 КГц

t = -10e-3:1/Fs:10e-3;%длительность радиоимпульса

Fc = 4e3;%несущая частота 4 КГц

bw = 0.1;%относительная ширина спектра 0.1

bwr = -20;%уровень = -20 дБ

s=gauspuls(t,Fc,bw,bwr);% генерация радиоимпульса

plot(t,s);

grid on

Функция pulstran служит для генерации конечной последовательности импульсов одинаковой формы с произвольно задаваемыми задержками и уровнями. Формат вызова этой функции следующий:

y = pulstran(t, d, ‘func’, p1, p2, …), где
t – вектор значений времени, d – вектор задержек, ‘func’ – имя функции, генерирующей одиночный импульс (могут использоваться функции rectpuls,
tripuls, gausplus или собственные функции). Оставшиеся параметры p1, p2, … – дополнительные, они передаются функции ‘func’ при ее вызове.

 

ЗАДАНИЕ

  • Проработайте основные примеры, изложенные выше, в системе MATLAB.
  • Измените параметры генерируемых сигналов в М-файлах из примеров № 1 и № 2. Для каждого из примеров создайте по два варианта собственной реализации.
  • С помощью функции rectpuls создайте одиночный двухполярный импульс, изображенный на рисунке 3.

    Рисунок 3.
    Одиночный двухполярный импульс.

  • С помощью функции tripuls создайте одиночный трапецеидальный импульс, изображенный на рисунке 4.


    Рисунок 4.
    Одиночный трапецеидальный импульс.

Исследуйте самостоятельно функции sinc и pulstran

 

  翻译: