pulstran

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

Описание

пример

y = pulstran(t,d,func) генерирует последовательность импульсов на основе выборок непрерывной функции, func.

пример

y = pulstran(t,d,func,fs) использует частоту дискретизации fs.

пример

y = pulstran(t,d,p) генерирует последовательность импульсов, которая является суммой нескольких задержанных интерполяций импульса прототипа в векторе p.

пример

y = pulstran(___,intfunc) задает альтернативные методы интерполяции. См. interp1 для получения списка доступных методов. Можно использовать этот параметр с любым из предыдущих входных синтаксисов.

Примеры

свернуть все

Этот пример генерирует последовательность импульсов, используя прямоугольный импульс по умолчанию модуля ширины. Частота повторения составляет 0,5 Гц, длина сигнала составляет 60 с, и частота дискретизации составляет 1 кГц. Коэффициент усиления является синусоидой частоты 0,05 Гц.

t = 0:1/1e3:60;
d = [0:2:60;sin(2*pi*0.05*(0:2:60))]';
x = @rectpuls;
y = pulstran(t,d,x);

plot(t,y)
hold off
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes. The axes contains an object of type line.

Этот пример генерирует асимметричную пилообразную форму волны с частотой повторения 3 Гц. Пилюля имеет ширину 0,2 с и коэффициент наклона -1. Длина сигнала составляет 1 с, а частота дискретизации - 1 кГц. Постройте график последовательности импульсов.

fs = 1e3;
t = 0:1/1e3:1;
d = 0:1/3:1;   
x = tripuls(t,0.2,-1);
y = pulstran(t,d,x,fs);

plot(t,y)
hold off
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes. The axes contains an object of type line.

Постройте график 10 кГц по Гауссову РЧ импульсу с 50% полосой пропускания, дискретизированной со скоростью 10 МГц. Обрезайте импульс, где огибающая падает на 40 дБ ниже пика.

fs = 1e7;
tc = gauspuls('cutoff',10e3,0.5,[],-40); 
t = -tc:1/fs:tc; 
x = gauspuls(t,10e3,0.5); 

plot(t,x)
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes. The axes contains an object of type line.

Частота повторения импульсов составляет 1 кГц, частота дискретизации - 50 кГц, а длина последовательности импульсов - 25 мс. Коэффициент усиления является синусоидой частоты 0,1 Гц.

ts = 0:1/50e3:0.025;
d = [0:1/1e3:0.025;sin(2*pi*0.1*(0:25))]';
y = pulstran(ts,d,x,fs);

Постройте график периодической последовательности импульсов.

plot(ts,y)
xlim([0 0.01])
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes. The axes contains an object of type line.

Напишите функцию, которая генерирует пользовательские импульсы, состоящие из синусоиды, демпфированной экспоненциальной. Импульс является нечетной функцией времени. Функция генерации имеет второй входной параметр, который задает одно значение для синусоидальной частоты и коэффициента затухания. Отобразите сгенерированный импульс, дискретизированный на частоте 1 кГц в течение 1 секунды, со значением частоты и демпфирования, оба равными 30.

fnx = @(x,fn) sin(2*pi*fn*x).*exp(-fn*abs(x));

ffs = 1000;
tp = 0:1/ffs:1;

pp = fnx(tp,30);

plot(tp,pp)
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes. The axes contains an object of type line.

Используйте pulstran функция для генерации train пользовательских импульсов. Дискретизацию train производят при частоте дискретизации 2 кГц в течение 1,2 с. Импульсы происходят каждую треть секунды и имеют экспоненциально уменьшающиеся амплитуды.

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

fs = 2e3;
t = 0:1/fs:1.2;

d = 0:1/3:1;
dd = [d;4.^-d]';

z = pulstran(t,dd,pp,ffs);

plot(t,z)
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes. The axes contains an object of type line.

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

y = pulstran(t,dd,fnx,30);

plot(t,y)
xlabel('Time (s)')
ylabel('Waveform')

Figure contains an axes. The axes contains an object of type line.

Написание функции, которая генерирует пользовательскую экспоненциально затухающую пилообразную форму волны с частотой 0,25 Гц. Функция генерации имеет второй входной параметр, который задает одно значение для частоты пилообразного дерева и коэффициента затухания. Отобразите сгенерированный импульс, дискретизированный с частотой 0,1 кГц в течение 1 секунды, со значением частоты и демпфирования, равными 50.

fnx = @(x,fn) sawtooth(2*pi*fn*0.25*x).*exp(-2*fn*x.^2);

fs = 100;
t = 0:1/fs:1;

pp = fnx(t,50);

plot(t,pp)

Figure contains an axes. The axes contains an object of type line.

Используйте pulstran функция для генерации train пользовательских импульсов. Дискретизация train составляет 0,1 кГц в течение 125 секунд. Импульсы происходят каждые 25 секунд и имеют экспоненциально уменьшающиеся амплитуды.

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

d = [0:25:125; exp(-0.015*(0:25:125))]';
ffs = 100;
tp = 0:1/ffs:125;

r = pulstran(tp,d,pp);
y = pulstran(tp,d,pp,'nearest');
q = pulstran(tp,d,pp,'pchip');


plot(tp,r)
hold on
plot(tp,y)
plot(tp,q)
xlim([0 125])
legend('Linear interpolation','Nearest neighbor interpolation','Piecewise cubic interpolation')
hold off

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Linear interpolation, Nearest neighbor interpolation, Piecewise cubic interpolation.

Входные параметры

свернуть все

Значения времени, в которые func вычисляется, задается как вектор.

Смещение удалено из значений массива t, заданный как вектор действительных чисел. Вы можете применить необязательный коэффициент усиления к каждой отложенной оценке, задав d в виде двухколоночной матрицы со смещением, заданным в столбце 1 и соответствующим усилением в столбце 2. Если вы задаете d как векторы-строки, значения интерпретируются только как задержки.

Непрерывная функция, используемая для генерации последовательности импульсов на основе его выборок, заданная как 'rectpuls', 'gauspuls', 'tripuls', или указатель на функцию.

Если вы используете func в качестве указателя на функцию можно передать параметры функции следующим образом:

y = pulstran(t,d,'gauspuls',10e3,0.5); 

Это создает последовательность импульсов с использованием Гауссова импульса на 10 кГц с 50% шириной полосы пропускания.

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

Частота дискретизации в Гц, заданная как действительный скаляр.

Метод интерполяции, заданный как один из опций в этой таблице.

Метод

Описание

Непрерывность

Комментарии

'linear'

Линейная интерполяция. Интерполированное значение в точке запроса основано на линейной интерполяции значений в соседних точках сетки в каждой соответствующей размерности. Это метод интерполяции по умолчанию.

C0

  • Требуется не менее 2 точки

  • Требуется больше памяти и времени расчета, чем у ближайшего соседа

'nearest'

Интерполяция по ближайшему соседу. Интерполированное значение в точке запроса является значением в ближайшей точке сетки расчета.

Прерывистый

  • Требуется не менее 2 точки

  • Скромные требования к памяти

  • Самое быстрое время расчета

'next'

Следующая соседняя интерполяция. Интерполированное значение в точке запроса является значением в следующей точке сетки расчета.

Прерывистый

  • Требуется не менее 2 точки

  • Аналогичные требования к памяти и времени расчета как 'nearest'

'previous'

Предыдущая соседняя интерполяция. Интерполированное значение в точке запроса является значением в предыдущей точке сетки образца.

Прерывистый

  • Требуется не менее 2 точки

  • Аналогичные требования к памяти и времени расчета как 'nearest'

'pchip' или 'cubic'

Кусочно-кубическая интерполяция с сохранением формы. Интерполированное значение в точке запроса основано на кусочно-кубической интерполяции значений в соседних точках сетки с сохранением формы.

C1

  • Требуется не менее 4 точки

  • Требуется больше памяти и времени расчетов, чем 'linear'

'v5cubic'

Кубическая свертка, используемая в MATLAB® 5.

C1

Точки должны быть равномерно разнесены.

'makima'

Модифицированная кубическая эрмитовая интерполяция Акимы. Интерполированное значение в точке запроса основано на кусочно-линейной функции полиномов со степенью не более трех. Формула Акимы изменена, чтобы избежать перерегулирования.

C1

  • Требуется не менее 2 точки

  • Производит меньше волн, чем 'spline', но не уплощается так агрессивно, как 'pchip'

  • Расчеты стоят дороже 'pchip', но обычно меньше 'spline'

  • Требования к памяти аналогичны требованиям к 'spline'

'spline'

Сплайн интерполяцию с помощью граничных условий и условий отсутствия узла. Интерполированное значение в точке запроса основано на кубической интерполяции значений в соседних точках сетки в каждой соответствующей размерности.

C2

  • Требуется не менее 4 точки

  • Требуется больше памяти и времени расчетов, чем 'pchip'

Выходные аргументы

свернуть все

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

Расширенные возможности

.

См. также

| | | | | | | | |

Представлено до R2006a