Main Content

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.5Hz이고, 신호 길이는 60초이고, 샘플 레이트는 1kHz입니다. 이득 인자는 주파수 0.05Hz의 정현파입니다.

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 object. The axes object with xlabel Time (s), ylabel Waveform contains an object of type line.

이 예제에서는 반복 주파수가 3Hz인 비대칭 톱니파형을 생성합니다. 톱니파의 폭은 0.2초이고, 왜도 인자는 -1입니다. 신호 길이는 1초이고, 샘플 레이트는 1kHz입니다. 펄스 열을 플로팅합니다.

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 object. The axes object with xlabel Time (s), ylabel Waveform contains an object of type line.

10MHz의 레이트로 샘플링되고 50%의 대역폭을 갖는 10kHz 가우스 RF 펄스를 플로팅합니다. 포락선이 피크에서 40dB 아래로 떨어지는 위치에서 펄스를 자릅니다.

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 object. The axes object with xlabel Time (s), ylabel Waveform contains an object of type line.

펄스 반복 주파수는 1kHz이고, 샘플 레이트는 50kHz이며, 펄스 열 길이는 25ms입니다. 이득 인자는 주파수 0.1Hz의 정현파입니다.

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 object. The axes object with xlabel Time (s), ylabel Waveform contains an object of type line.

지수적으로 감쇠하는 정현파로 구성된 사용자 지정 펄스를 생성하는 함수를 작성합니다. 펄스는 시간에 대한 기함수입니다. 생성 함수는 정현파 주파수와 감쇠 인자에 대해 단일 값을 지정하는 두 번째 입력 인수를 가집니다. 1초 동안 1kHz로 샘플링된, 주파수와 감쇠 값이 모두 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 object. The axes object with xlabel Time (s), ylabel Waveform contains an object of type line.

pulstran 함수를 사용하여 사용자 지정 펄스 열을 생성합니다. 열은 1.2초 동안 2kHz로 샘플링됩니다. 펄스는 1/3초마다 한 번씩 발생하며 지수적으로 감소하는 진폭을 가집니다.

먼저, 생성된 펄스를 프로토타입으로 지정합니다. 함수 호출에 프로토타입 샘플 레이트를 포함합니다. 여기서는 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 object. The axes object with xlabel Time (s), ylabel Waveform contains an object of type line.

이번에는 생성 함수를 입력 인수로 사용하여 펄스 열을 다시 생성합니다. 함수 호출에 주파수와 감쇠 파라미터를 포함합니다. 여기서는 pulstran이 중심이 0에 오도록 펄스를 생성합니다.

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

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

Figure contains an axes object. The axes object with xlabel Time (s), ylabel Waveform contains an object of type line.

주파수 0.25Hz의 지수적으로 감쇠하는 사용자 지정 톱니파형을 생성하는 함수를 작성합니다. 생성 함수는 톱니파 주파수와 감쇠 인자에 대해 단일 값을 지정하는 두 번째 입력 인수를 가집니다. 1초 동안 0.1kHz로 샘플링된, 주파수와 감쇠 값이 모두 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 object. The axes object contains an object of type line.

pulstran 함수를 사용하여 사용자 지정 펄스 열을 생성합니다. 열은 125초 동안 0.1kHz로 샘플링됩니다. 펄스는 25초마다 한 번씩 발생하며 지수적으로 감소하는 진폭을 가집니다.

생성된 펄스를 프로토타입으로 지정합니다. 디폴트 선형 보간 방법, 최근접이웃 보간 및 조각별 3차 보간을 사용하여 3개의 펄스 열을 생성합니다. 하나의 플롯에서 펄스 열을 비교합니다.

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 object. The axes object contains 3 objects of type line. These objects represent Linear interpolation, Nearest neighbor interpolation, Piecewise cubic interpolation.

입력 인수

모두 축소

func가 평가되는 시간 값으로, 벡터로 지정됩니다.

배열 t의 값에서 제거된 오프셋으로, 실수형 벡터로 지정됩니다. 선택 사항인 이득 인자는 d를 2열 행렬로 지정하여 각각의 지연된 평가에 적용할 수 있습니다. 1열에는 오프셋을 정의하고 2열에는 이와 관련된 이득을 정의합니다. d를 행 벡터로 지정할 경우 값은 지연으로만 해석됩니다.

샘플을 기반으로 하여 펄스 열을 생성하는 데 사용되는 연속 함수로, 'rectpuls', 'gauspuls', 'tripuls' 또는 함수 핸들로 지정됩니다.

func를 함수 핸들로 사용할 경우 다음과 같이 함수 파라미터를 전달할 수 있습니다.

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

이렇게 하면 50%의 대역폭을 갖는 10kHz 가우스 펄스를 사용하여 펄스 열이 생성됩니다.

프로토타입 함수로, 벡터로 지정됩니다. p의 간격은 [0,(length(p)-1)/fs]이며, 그 샘플은 이 구간 밖에서 정확히 0입니다. 기본적으로, 선형 보간은 지연 생성에 사용됩니다.

샘플 레이트(단위: Hz)로, 실수형 스칼라로 지정됩니다.

보간 방법으로, 다음 표에 나와 있는 옵션 중 하나로 지정됩니다.

방법

설명

연속성

설명

'linear'

선형 보간입니다. 쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서의 값이 선형 보간된 것입니다. 이는 디폴트 보간 방법입니다.

C0

  • 2개 이상의 점이 필요함

  • 최근접이웃보다 메모리와 계산 시간이 더 많이 필요함

'nearest'

최근접이웃 보간입니다. 쿼리 점에서 보간된 값은 가장 근접한 샘플 그리드 점에서의 값입니다.

불연속

  • 2개 이상의 점이 필요함

  • 적당한 메모리 요구 사항

  • 계산 시간이 가장 빠름

'next'

다음 이웃 보간입니다. 쿼리 점에서 보간된 값은 그다음 샘플 그리드 점에서의 값입니다.

불연속

  • 2개 이상의 점이 필요함

  • 메모리 요구 사항과 계산 시간은 'nearest'와 비슷함

'previous'

이전 이웃 보간입니다. 쿼리 점에서 보간된 값은 이전 샘플 그리드 점에서의 값입니다.

불연속

  • 2개 이상의 점이 필요함

  • 메모리 요구 사항과 계산 시간은 'nearest'와 비슷함

'pchip' 또는 'cubic'

형태 보존 조각별 3차 보간입니다. 쿼리 점에서 보간된 값은 인접 그리드 점에서의 값이 형태 보존 조각별 3차 보간된 것입니다.

C1

  • 4개 이상의 점이 필요함

  • 'linear'보다 메모리와 계산 시간이 더 많이 필요함

'v5cubic'

MATLAB® 5에서 사용되는 3차 컨벌루션입니다.

C1

점의 간격이 균일해야 합니다.

'makima'

아키마 3차 에르미트 다항식 변형 보간입니다. 쿼리 점에서 보간된 값은 차수가 최대 3인 조각별 다항식 함수를 기반으로 합니다. 아키마 수식이 오버슈트를 방지하도록 수정되었습니다.

C1

  • 2개 이상의 점이 필요함

  • 요동을 'spline'보다 적게 생성하지만, 'pchip'만큼 과감하게 평탄화하지 않음

  • 계산은 'pchip'보다 더 비용이 많이 들지만, 일반적으로 'spline'보다는 덜 듦

  • 메모리 요구 사항은 'spline'의 경우와 유사함

'spline'

not-a-knot 끝 조건을 사용한 스플라인 보간입니다. 쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서의 값이 3차 보간된 것입니다.

C2

  • 4개 이상의 점이 필요함

  • 'pchip'보다 메모리와 계산 시간이 더 많이 필요함

출력 인수

모두 축소

함수에 의해 생성된 펄스 열로, 벡터로 반환됩니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | | | | | | |