exponenta event banner

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 для формирования последовательности пользовательских импульсов. Последовательность отбирается при частоте 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 для формирования последовательности пользовательских импульсов. Последовательность отбирают при 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'

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

C1

  • Требуется не менее 2 баллов

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

  • Вычисление дороже, чем 'pchip', но обычно меньше, чем 'spline'

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

'spline'

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

C2

  • Требуется не менее 4 баллов

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

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

свернуть все

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

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

.

См. также

| | | | | | | | |

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