pulstran

Синтаксис

y = pulstran(t,d,func)
y = pulstran(t,d,func,fs)
y = pulstran(t,d,p)
y = pulstran(___,intfunc)

Описание

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

Этот пример генерирует импульсный train с помощью меандра по умолчанию модульной ширины. Частота повторения составляет 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 кГц. Постройте импульсный train.

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 кГц, и импульсная длина train составляет 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);

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

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, чтобы сгенерировать 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')

Сгенерируйте импульсный train снова, но теперь используйте производящую функцию в качестве входного параметра. Включайте частоту и параметр затухания в вызове функции. В этом случае 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, чтобы сгенерировать train пользовательских импульсов. Train выбирается на уровне 0,1 кГц в течение 125 секунд. Импульсы происходят каждые 25 секунд и имеют экспоненциально уменьшающиеся амплитуды.

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

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 как вектор - строку, значения интерпретированы как задержки только.

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

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

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

Это создает импульсный train с помощью Гауссова импульса на 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'

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

свернуть все

Импульсный train сгенерирован функцией, возвращенной как вектор.

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

Смотрите также

| | | | | | | | |

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