Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Генерация сигналов нов.docx
Скачиваний:
24
Добавлен:
03.05.2015
Размер:
961.68 Кб
Скачать

Получить

  1. Низкочастотный полигармонический сигнал

  2. Высокочастотный полигармонический сигнал

  3. С Частотной модуляцией

  4. С Амплитудной модуляцией

Генерация одиночного прямоугольного импульса rectpuls

Синтаксис:

y = rectpuls(t)

y = rectpuls(t,w)

Описание:

y = rectpuls(t)

Возвращает отсчеты одиночного прямоугольного импульса с единичной амплитудой, вычисленные для моментов времени, заданные входным вектором t. Формируемый импульс центрирован относительно момента времени t = 0 и по умолчанию имеет единичную длительность. Обратите внимание на то, что интервал ненулевых значений является открытым справа, то есть rectpuls(-0.5) = 1, в то время как rectpuls(0.5) = 0.

y = rectpuls(t,w)

Генерирует аналогичный прямоугольный импульс с длительностью, заданной вторым входным параметром w. Функция rectpuls, как правило, используется в сочетании с функцией генерации последовательностей импульсов pulstran.

Пример 1

t=(0:1000);

y=rectpuls(t);

plot(y)

Пример 2

t=(0:1000);

y=rectpuls(t,1000);

plot(y)

Сопутствующие функции: chirp, cos, diric, gauspuls, pulstran, sawtooth, sin, sinc, square, tripuls

Генерация периодической последовательности прямоугольных импульсов square

Синтаксис:

x = square(t)

x = square(t,duty)

Описание:

x = square(t)

Генерирует прямоугольный сигнал с периодом 2 для значений времени, заданных входным вектором t. Функция square(t) работает аналогично функции sin(t), но вместо синусоидального сигнала генерирует прямоугольный сигнал с пиковыми значениями ±1. Длительности интервалов, в течение которых созданный сигнал принимает значения +1 и -1, одинаковы.

x = square(t,duty)

Генерирует периодический прямоугольный сигнал с заданным периодом заполнения, задаваемым вторым входным скалярным параметром duty. Этот параметр задается в процентах и указывает, в течение какой доли периода генерируемый сигнал принимает положительное значение (+1). По умолчанию значение параметра duty равно 50.

Замечание. В отечественной литературе для характеристики периодической последовательности прямоугольных импульсов чаще применяется параметр скважности, определяемый как отношение периода к длительности импульса. Скважность импульсов, генерируемых функцией square, равна 100/duty (если импульсом считать интервалы, когда сигнал принимает значение +1, а паузой - значение -1). Если параметр duty при вызове функции не указан, по умолчанию скважность генерируемой последовательности равна 2.

Пример 1

t=(0:100);

x=square(t);

plot(x)

Пример 2

t=(0:100);

x=square(t,20);

plot(x)

Пример 3

t=(0:100);

x=square(t,80);

plot(x)

Сопутствующие функции: chirp, cos, diric, gauspuls, pulstran, rectpuls, sawtooth, sin, square, tripuls

Генерация одиночного треугольного импульса tripuls

Синтаксис:

y = tripuls(T)

y = tripuls(T,w)

y = tripuls(T,w,s)

Описание:

y = tripuls(T)

Возвращает отсчеты одиночного симметричного треугольного импульса с единичной амплитудой, вычисленные для моментов времени, заданных входным вектором T. Формируемый импульс центрирован относительно момента времени T=0 и по умолчанию имеет единичную длительность.

y = tripuls(T,w)

Генерирует аналогичный треугольный импульс с длительностью, заданной вторым входным параметром w.

y = tripuls(T,w,s)

Генерирует треугольный импульс с длительностью w и перекосом, заданным третьим входным параметром s, который должен лежать в диапазоне от -1 до 1. При s=0 генерируется симметричный треугольный импульс.

Пример 1

t=(-10:10);

y=tripuls(t);

plot(y)

Пример 2

t=(-10:10);

y=tripuls(t,10);

plot(y)

Пример 3

t=(-10:10);

y=tripuls(t,10,-1);

plot(y)

Пример 4

t=(-10:10);

y=tripuls(t,10,1);

plot(y)

Сопутствующие функции: chirp, cos, diric, gauspuls, pulstran, rectpuls, sawtooth, sin, square, tripuls

Генерация периодического пилообразного сигнала sawtooth

Синтаксис:

x = sawtooth(t)

x = sawtooth(t,width)

Описание:

x = sawtooth(t)

Генерирует пилообразный сигнал с периодом 2 для значений времени, заданных входным вектором t. Функция sawtooth(t) работаете аналогично sin(t), но вместо синусоидального сигнала генерирует пилообразный, минимумы и максимумы которого равны -1 и 1 соответственно. Генерируемый пилообразный сигнал равен -1 в моменты времени, кратные 2 , и линейно возрастает с коэффициентом наклона 1/ во все остальные промежутки времени.

x = sawtooth(t,width)

Генерирует модифицированный пилообразный сигнал, при этом второй входной скалярный параметр width, который может принимать значения от 0 до 1, задает положение тех точек (в диапазоне от 0 до 2 , то есть в пределах периода), где генерируемый сигнал принимает максимальное значение. Генерируемая функция линейно возрастает от -1 до 1 на интервале от 0 до 2*width, а затем линейно убывает от 1 до -1 на интервале от 2*width до 2 . Таким образом, значение width = 0.5 соответствует стандартному треугольному сигналу, симметричному относительно момента времени и имеющему пиковые значения 1. Вызов sawtooth(t,1) эквивалентен sawtooth(t), то есть значение параметра width по умолчанию равно 1.

Пример 1

t=(-25:25);

y=sawtooth(t);

plot(y)

Пример 2

t=(-25:25);

y=sawtooth(t);

plot(y)

Сопутствующие функции: chirp, cos, diric, gauspuls, pulstran, rectpuls, sin, sinc, square, tripuls

Генерация последовательности импульсов произвольной формы pulstran

Синтаксис:

y = pulstran(t,d,'func')

y = pulstran(t,d,'func',p1,p2,...)

y = pulstran(t,d,p,fs)

y = pulstran(t,d,p)

Описание:

Функция pulstran генерирует последовательности из конечного числа импульсов, форма которых задается непрерывными функциями или наборами отсчетов.

y = pulstran(t,d,'func')

Генерирует последовательность импульсов, форма которых определяется непрерывной функцией времени, имя которой задается строковым входным параметром 'func'. Этот параметр должен являться именем функции, которая в качестве первого входного параметра принимает вектор моментов времени, а возвращает вектор отсчетов импульса, рассчитанных для этих моментов времени. Примерами возможных значений параметра 'func' являются следующие строки:

  • 'gauspuls' - для генерации последовательности гауссовых радиоимпульсов;

  • 'rectpuls' - для генерации последовательности прямоугольных импульсов;

  • 'tripuls' - для генерации последовательности треугольных импульсов.

Функция pulstran вызывает функцию 'func' length(d) раз и возвращает сумму результатов, полученную следующим образом:

y = func(t-d(1)) + func(t-d(2)) + ...

Функция 'func' вычисляется для моментов времени, заданных входным вектором t, из которых вычитается задержка, определяемая для каждого импульса соответствующим элементом входного вектора d. Обратите внимание на то, что 'func' должна быть векторизованной функцией, то есть она должна быть способна принимать на входе вектор значений времени t.

Помимо разных задержек, генерируемые импульсы могут иметь различные амплитуды. Для этого необходимо задать входной параметр d в виде двухстолбцовой матрицы, в первом столбце которой содержатся значения задержек, а во втором - значения амплитудных множителей. Обратите внимание на то, что если параметр d задан в виде вектора произвольной ориентации (строка или столбец), он интерпретируется функцией как вектор задержек.

y = pulstran(t,d,'func',p1,p2,...)

Передает функции 'func' дополнительные параметры p1, p2 и т. д. Результат в этом случае рассчитывается следующим образом:

y = func(t-d(1),p1,p2,...) + func(t-d(2),p1,p2,...) + ...

y = pulstran(t,d,p,fs)

Генерирует последовательность импульсов, форма которых задана вектором отсчетов p, взятых с частотой дискретизации fs. Предполагается, что отсчеты из вектора p соответствуют временному интервалу [0,(length(p)-1)/fs], а за пределами этого интервала значения отсчетов равны нулю. Для пересчета отсчетов задержанных импульсов к моментам времени из вектора t по умолчанию используется линейная интерполяция.

y = pulstran(t,d,p)

В данном варианте синтаксиса по умолчанию считается, что частота дискретизации fs равна 1 Гц.

y = pulstran(...,'func')

Дополнительно позволяет указать используемый метод интерполяции с помощью строкового параметра 'func'. Список возможных методов интерполяции см. на странице с описанием функции interp1.

Пример 1

В данном примере генерируется последовательность асимметричных пилообразных импульсов длительностью 0,1 с, следующих друг за другом с частотой 3 Гц. Длительность генерируемого сигнала равна 1 с, частота дискретизации составляет 1 кГц:

t = 0:1/1e3:1; % интервал 1 с дискретизирован с частотой 1 кГц

d = 0:1/3:1; % вектор задержек - частота импульсов 3 Гц

y = pulstran(t,d,'tripuls',0.1,-1);

plot(t,y)

Пример 2

В данном примере генерируется последовательность гауссовых радиоимпульсов с несущей частотой 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,0.5);

plot(t,y)

Пример 3

В данном примере генерируется последовательность из 10 окон Хэмминга:

p = hamming(32);

t = 0:320; d = (0:9)'*32;

y = pulstran(t,d,p);

plot(t,y)

Сопутствующие функции: chirp, cos, diric, gauspuls, rectpuls, sawtooth, sin, sinc, square, tripuls

Генерация сигнала с изменяющейся частотой chirp

Синтаксис:

y = chirp(t,f0,t1,f1)

y = chirp(t,f0,t1,f1,'method')

y = chirp(t,f0,t1,f1,'method',phi)

y = chirp(t,f0,t1,f1,'quadratic',phi,'shape')

Описание:

y = chirp(t,f0,t1,f1)

Генерирует отсчеты сигнала с линейной частотной модуляцией для моментов времени, заданных входным параметром t. Входной параметр f0 задает мгновенную частоту сигнала в нулевой момент времени, а параметр f1 задает мгновенную частоту сигнала для момента времени t1. Оба параметра f0 и f1 задаются в герцах. По умолчанию используются следующие значения: f0 = 0, t1 = 1, f1 = 100.

y = chirp(T,F0,T1,F1,'method')

В данном варианте синтаксиса дополнительный входной строковый параметр 'method' позволяет задать закон изменения мгновенной частоты. Возможны следующие значения этого параметра:

  • 'linear' - линейный закон. Зависимость мгновенной частоты от времени описывается следующей формулой:

где

Такой выбор параметра обеспечивает в момент t1 значение мгновенной частоты, равное f1.

  • 'quadratic' - квадратичный закон. Зависимость мгновенной частоты от времени описывается следующей формулой:

где

Если f0 > f1 (уменьшение частоты), зависимость мгновенной частоты от времени по умолчанию является выпуклой (convex). Если f0 < f1 (увеличение частоты), зависимость мгновенной частоты от времени по умолчанию является вогнутой (concave).

  • 'logarithmic' - логарифмический закон. Несмотря на название метода, мгновенная частота в данном случае зависит от времени не по логарифмическому, а по экспоненциальному закону:

где

В данном случае должно выполняться неравенство f1 > f0.

Все три закона изменения частоты могут задаваться сокращенными строками 'li', 'q' и 'lo' соответственно.

y = chirp(t,f0,t1,f1,'method',phi)

Дополнительно позволяет задать начальную фазу колебания (в градусах) с помощью входного параметра phi. По умолчанию предполагается, что phi = 0. Значения по умолчанию подставляются вместо пустых ([]) и неуказанных параметров.

y = chirp(t,f0,t1,f1,'quadratic',phi,'shape')

Дополнительно позволяет задать форму квадратичной зависимости с помощью строкового параметра 'shape'. Возможны два значения этого параметра - concave (вогнутый) и convex (выпуклый). Они описывают форму параболы частотного закона в области положительных значений времени. Если параметр 'shape' опущен, по умолчанию форма параболы является выпуклой при уменьшении частоты (f0 > f1) и вогнутой при увеличении частоты (f0 < f1).

Пример 1

Построим спектрограмму для сигнала с линейной частотной модуляцией:

t = 0:0.001:2; % 2 секунды с частотой 1 кГц

y = chirp(t,0,1,150); % частота меняется от 0 (при t=0) до 150 Гц (при t=1 с)

specgram(y,256,1e3,256,250) % спектрограмма

title('Linear chirp')

Пример 2

Построим спектрограмму для сигнала с квадратичной частотной модуляцией:

t = -2:0.001:2; % ±2 секунды с частотой 1 кГц

y = chirp(t,100,1,200,'quadratic'); % при t=0 частота 100 Гц,

% при t=1 частота 200 Гц

specgram(y,128,1e3,128,120) % спектрограмма

title('Quadratic chirp')

Пример 3

Построим спектрограмму для сигнала с выпуклым законом квадратичной частотной модуляции:

t= -1:0.001:1; % ±1 секунда с частотой 1 кГц

fo=100; f1=400; % при t=0 частота 100 Гц,

% при t=1 частота 400 Гц

y=chirp(t,fo,1,f1,'q',[],'convex');

specgram(y,256,1000) % спектрограмма

title('Convex chirp')

Пример 4

Построим спектрограмму для сигнала с вогнутым законом квадратичной частотной модуляции:

t= -1:0.001:1; % ±1 секунда с частотой 1 кГц

fo=100; f1=400; % при t=0 частота 100 Гц,

% при t=1 частота 400 Гц

y=chirp(t,fo,1,f1,'q',[],'concave');

specgram(y,256,1000) % спектрограмма

title('Concave chirp')

Сопутствующие функции: cos, diric, gauspuls, pulstran, rectpuls, sawtooth, sin, sinc, square, tripuls

Генерация гауссова моноимпульса gmonopuls

Синтаксис:

y = gmonopuls(t,fc)

tc = gmonopuls('cutoff',fc)

Описание:

y = gmonopuls(t,fc)

Возвращает отсчеты гауссова моноимпульса с единичной амплитудой, рассчитанные в моменты времени, заданные входным вектором t. Несущая частота генерируемого сигнала (в герцах) задается входным параметром fc. По умолчанию fc = 1000 Гц.

tc = gmonopuls('cutoff',fc)

При использовании данного варианта синтаксиса вызова функции вместо расчета моноимпульса производится только определение расстояния по времени между точками, где моноимпульс принимает минимальное и максимальное значения.

Замечание. Значения по умолчанию используются, если параметр задан в виде пустой матрицы [] или если при вызове функции один или несколько последних входных параметров отсутствуют.

Пример 1

Построим график гауссова моноимпульса с несущей частотой 2 ГГц, взяв его отсчеты с частотой 100 ГГц:

fc = 2E9; fs=100E9;

tc = gmonopuls('cutoff',fc);    % интервал между максимумом и минимумом

t = -2*tc : 1/fs : 2*tc;    % вектор моментов времени для расчета

y = gmonopuls(t,fc);    % расчет значений моноимпульса

plot(t,y)

grid on

Пример 2

Создадим последовательность моноимпульсов из примера 1, следующих друг за другом с шагом 7.5 нс:

fc = 2E9; fs=100E9; % несущая частота, частота дискретизации

D = [2.5 10 17.5]' * 1e-9; % задержки импульсов

tc = gmonopuls('cutoff',fc); % ширина каждого импульса

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

yp = pulstran(t,D,@gmonopuls,fc); % последовательность импульсов

plot(t,yp)

Алгоритм

Гауссов моноимпульс представляет собой производную от гауссова импульса и рассчитывается следующим образом:

Максимум и минимум сигнала достигаются в моменты времени .

Спектральная функция данного сигнала является чисто мнимой, а ее форма имеет такой же вид, как и сигнал во временной области:

Максимум модуля спектральной функции достигается при заданной несущей частоте fc, то есть при .

Сопутствующие функции: chirp, gauspuls, pulstran, rectpuls, tripuls

Генерация радиоимпульса с гауссовой огибающей gauspuls

Синтаксис:

yi = gauspuls(t,fc,bw)

yi = gauspuls(t,fc,bw,bwr)

[yi,yq] = gauspuls(...)

[yi,yq,ye] = gauspuls(...)

tc = gauspuls('cutoff',fc,bw,bwr,tpe)

Описание:

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

yi = gauspuls(t,fc,bw)

Возвращает гауссов радиоимпульс с единичной амплитудой, рассчитанный в моменты времени, заданные входным вектором t. Несущая частота генерируемого радиосигнала (в герцах) задается входным параметром fc, а относительная (то есть нормированная к несущей частоте) ширина спектра по уровню -6 дБ - входным параметром bw, который должен быть положительным числом. По умолчанию используются следующие значения: fc = 1000 Гц, bw = 0.5.

yi = gauspuls(t,fc,bw,bwr)

Возвращает гауссов радиоимпульс с единичной амплитудой, относительная ширина спектра которого (bw) измеряется по уровню bwr дБ относительно спектрального пика. Значение параметра bwr должно быть отрицательным, так как оно задает требуемое уменьшение спектральной функции относительно ее пикового уровня. Значение параметра bwr по умолчанию равно -6 дБ.

[yi,yq] = gauspuls(...)

Возвращает два радиоимпульса с квадратурным сдвигом несущего колебания: синфазный yi и квадратурный yq.

[yi,yq,ye] = gauspuls(...)

Дополнительно возвращает амплитудную огибающую импульса ye.

tc = gauspuls('cutoff',fc,bw,bwr,tpe)

При использовании данного варианта синтаксиса вызова функции вместо расчета импульса производится только определение времени отсечки tc, за которое амплитуда импульса падает до уровня tpe дБ относительно максимального значения. Значение параметра tpe должно быть отрицательным, так как оно задает требуемое уменьшение огибающей относительно ее пикового уровня. Значение параметра tpe по умолчанию равно -60 дБ.

Замечание. Значения по умолчанию используются, если параметр задан в виде пустой матрицы [] или если при вызове функции один или несколько последних входных параметров отсутствуют.

Примеры

Построим график гауссова радиоимпульса с несущей частотой 50 кГц и относительной полосой 60%, взяв его отсчеты с частотой 1 МГц. Для расчетов и построения графика используем интервал времени, в котором амплитуда импульса падает до уровня -40 дБ относительно пикового значения:

tc = gauspuls('cutoff', 50e3, 0.6, [], -40); % определяем интервал времени

t = -tc : 1e-6 : tc; % вектор моментов времени для расчета

yi = gauspuls(t,50e3,0.6); % расчет значений радиоимпульса

plot(t,yi)

grid on

Сопутствующие функции: chirp, cos, diric, pulstran, rectpuls, sawtooth, sin, sinc, square, tripuls

Функция sinc(x) = sin(x)/(x)

Синтаксис:

y = sinc(x)

Описание:

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

Эта функция представляет собой обратное непрерывное преобразование Фурье от прямоугольного импульса шириной 2 и высотой 1:

y = sinc(x)

Возвращает массив y того же размера, что и входной массив x, значения элементов которого представляют собой функцию sinc от соответствующих элементов входного массива x.

Пространство функций, спектр которых ограничен полосой частот [-,], натянуто на бесконечное (но счетное) множество sinc-функций с целочисленными сдвигами аргумента. Таким образом, произвольная функция g(t) с ограниченной указанным образом полосой частот может быть восстановлена по своим отсчетам, взятым в целочисленные моменты времени:

Примеры

Выполним идеальную (с жестким ограничением полосы частот) интерполяцию сигнала, предполагая, что он равен нулю за пределами рассматриваемого промежутка времени, а исходные отсчеты взяты в точности с частотой Найквиста:

t = (1:10)'; % Вектор-столбец дискретных моментов времени

randn('state',0);

x = randn(size(t)); % Вектор-столбец отсчетов сигнала

ts = linspace(-5,15,600)'; % Моменты времени для интерполяции

% В следующей строке производится формирование матрицы,

% столбцы которой представляют собой sinc-функции

% с различными временными сдвигами, соответствующими

% значениям времени из вектора t. Затем эта матрица умножается

% на столбец отсчетов сигнала x, что в результате дает

% интерполированный сигнал

y = sinc(ts(:,ones(size(t))) - t(:,ones(size(ts)))')*x;

plot(t,x,'o',ts,y)

Сопутствующие функции: chirp, cos, diric, gauspuls, pulstran, rectpuls, sawtooth, sin, square, tripuls

Функция Дирихле (периодическая sinc-функция) diric

Синтаксис:

y = diric(x,n)

Описание:

y = diric(x,n)

Возвращает вектор или матрицу y того же размера, что и входной параметр x. Значения элементов матрицы y представляют собой функцию Дирихле от соответствующих элементов входной матрицы x. Порядок функции Дирихле n должен быть положительным целым числом.

Функция Дирихле, или периодическая sinc-функция, рассчитывается следующим образом:

где n - произвольное положительное целое число. Эта функция имеет период 2 при нечетном n и 4 при четном n. Максимальное значение функции равно 1, минимальное значение при четном n равно -1. Функцию Дирихле можно трактовать как деленное на n преобразование Фурье от дискретного n-точечного прямоугольного окна.

Диагностические сообщения

Если входной параметр n не является положительным целым числом, функция diric выдает следующее сообщение об ошибке:

Requires n to be a positive integer.

Пример 1

t=(-25:25);

y=diric(t,5);

plot(y)

Сопутствующие функции: cos, gauspuls, pulstran, rectpuls, sawtooth, sin, sinc, square, tripuls

Генератор, управляемый напряжением vco

Синтаксис:

y = vco(x,fc,fs)

y = vco(x,[Fmin Fmax],fs)

Описание:

y = vco(x,fc,fs)

Генерирует сигнал, мгновенная частота которого меняется по закону, заданному отсчетами из входного вещественного вектора или матрицы x. Частота дискретизации отсчетов x задается входным параметром fs. Входной параметр fc задает несущую (опорную) частоту в герцах; при x = 0 созданный сигнал y представляет собой гармоническое колебание с частотой fc Гц и единичной амплитудой, дискретизированное с частотой fs Гц. Значения элементов x должны лежать в диапазоне от -1 до 1, при этом:

  • значение x = -1 дает сигнал с нулевой частотой;

  • значение x = 0 дает сигнал с частотой fc;

  • значение x = 1 дает сигнал с частотой 2*fc

Выходной сигнал y имеет такие же размер и ориентацию, как и входной параметр x.

y = vco(x,[Fmin Fmax],fs)

В данном варианте синтаксиса диапазон изменения мгновенной частоты масштабируется таким образом, что значения ±1 из вектора x соответствуют частотам Fmin Гц и Fmax Гц соответственно. Для получения наилучших результатов значения Fmin и Fmax должны лежать в диапазоне от 0 до fs/2.

По умолчанию fs = 1 Гц и fc = fs/4.

Если x является матрицей, ее столбцы обрабатываются независимо друг от друга.

Примеры

Сгенерируем сигнал длительностью 2 секунды, дискретизированный с частотой 10 кГц, мгновенная частота которого меняется во времени по треугольному закону:

fs = 10000;

t = 0:1/fs:2;

x = vco(sawtooth(2*pi*t,0.75),[0.1 0.4]*fs,fs);

Выведем спектрограмму полученного сигнала:

specgram(x,512,fs,kaiser(256,5),220)

Алгоритм

Функция vco производит частотную модуляцию сигнала, вызывая для этого функцию modulate.

Диагностические сообщения

Если в массиве x имеются элементы, лежащие за пределами диапазона [-1, 1], функция vco выдает следующее сообщение об ошибке:

X outside of range [-1,1].

Сопутствующие функции: demod, modulate

Источник

http://matlab.exponenta.ru

Получить

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]