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

Этот пример генерирует асимметричную пилообразную форму волны с частотой повторения 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')

Постройте Гауссов РЧ импульс на 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')

Импульсная частота повторения составляет 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')

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

Используйте 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')

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

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

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

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

Используйте 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

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

свернуть все

Временные стоимости, в который func оценен, задан как вектор.

Возместите удаленный из значений массива t, заданный как вектор действительных чисел. Можно применить дополнительный фактор усиления к каждой задержанной оценке путем определения d как матрица 2D столбца, со смещением, заданным в столбце 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