이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

impulse

동적 시스템의 임펄스 응답 플롯, 임펄스 응답 데이터

구문

impulse(sys)
impulse(sys,Tfinal)
impulse(sys,t)
impulse(sys1,sys2,...,sysN)
impulse(sys1,sys2,...,sysN,Tfinal)
impulse(sys1,sys2,...,sysN,t)
[y,t] = impulse(sys)
[y,t] = impulse(sys,Tfinal)
y = impulse(sys,t)
[y,t,x] = impulse(sys)
[y,t,x,ysd] = impulse(sys)

설명

impulse동적 시스템 모델의 단위 임펄스 응답을 계산합니다. 연속시간 동적 시스템의 경우 임펄스 응답은 디랙 입력 δ(t)에 대한 응답입니다. 이산시간 시스템의 경우 임펄스 응답은 길이가 Ts이고 높이가 1/Ts인 단위 면적 펄스에 대한 응답입니다. 여기서 Ts는 시스템의 샘플 시간입니다. (이 펄스는 Ts가 0에 가까워질수록 δ(t)에 가까워집니다.) 상태공간 모델의 경우 impulse는 초기 상태 값이 0이라고 가정합니다.

impulse(sys)는 동적 시스템 모델 sys의 임펄스 응답을 플로팅합니다. 이 모델은 연속 모델 또는 이산 모델일 수 있고 SISO 또는 MIMO일 수 있습니다. 다중 입력 시스템의 임펄스 응답은 각 입력 채널에 대한 임펄스 응답의 모음입니다. 시뮬레이션의 지속 시간은 응답의 과도적 동작을 표시할 수 있도록 자동으로 정해집니다.

impulse(sys,Tfinal)t = 0부터 마지막 시간 t = Tfinal까지의 임펄스 응답을 시뮬레이션합니다. TfinalsysTimeUnit 속성에 지정된 시스템 시간 단위로 표현합니다. 샘플 시간이 지정되지 않은(Ts = -1) 이산시간 시스템의 경우 impulseTfinal을 시뮬레이션할 샘플링 주기의 개수로 해석합니다.

impulse(sys,t) 는 시뮬레이션에 사용자 제공 시간 벡터 t를 사용합니다. tsysTimeUnit 속성에 지정된 시스템 시간 단위로 표현합니다. 이산시간 모델의 경우 tTi:Ts:Tf 형식이어야 합니다. 여기서 Ts는 샘플 시간입니다. 연속시간 모델의 경우 tTi:dt:Tf 형식이어야 합니다. 여기서 dt는 연속 시스템에 대한 이산 근사의 샘플 시간이 됩니다(알고리즘 참조). impulse 명령은 Ti와 관계없이 항상 t=0에서 임펄스를 적용합니다.

여러 모델 sys1,..., sysN의 임펄스 응답을 단일 Figure에 플로팅하려면 다음을 사용하십시오.

impulse(sys1,sys2,...,sysN)

impulse(sys1,sys2,...,sysN,Tfinal)

impulse(sys1,sys2,...,sysN,t)

bode 또는 plot과 마찬가지로, 각 시스템에 대해 특정 색, 선 스타일 및/또는 마커를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

impulse(sys1,'y:',sys2,'g--')

자세한 내용은 "Plotting and Comparing Multiple Systems"와 이 섹션의 bode 항목을 참조하십시오.

출력 인수와 함께 호출할 경우:

[y,t] = impulse(sys)

[y,t] = impulse(sys,Tfinal)

y = impulse(sys,t)

impulse는 출력 응답 y와 시뮬레이션에 사용되는 시간 벡터 t(임펄스에 대한 인수로 제공되지 않은 경우)를 반환합니다. 플롯이 화면에 그려지지는 않습니다. 단일 입력 시스템의 경우 y는 행 수가 시간 샘플의 개수(t의 길이)와 같고 열 수가 출력의 개수와 같습니다. 다중 입력 시스템의 경우 각 입력 채널의 임펄스 응답은 y의 세 번째 차원을 따라 누적됩니다. 이때 y의 차원은 다음과 같습니다.

상태공간 모델에만 해당:

[y,t,x] = impulse(sys)

(t의 길이) × (출력의 개수) × (입력의 개수)

y(:,:,j)j번째 입력 채널에 작용하는 임펄스 외란에 대한 응답을 제공합니다. 마찬가지로, x의 차원은 다음과 같습니다.

(t의 길이) × (상태의 개수) × (입력의 개수)

[y,t,x,ysd] = impulse(sys)는 식별된 시스템 SYS의 응답 Y의 표준편차 YSD를 반환합니다. SYS가 파라미터 공분산 정보를 포함하지 않을 경우 YSD는 비어 있습니다.

예제

2차 상태공간 모델의 임펄스 응답 플롯

다음과 같은 2차 상태공간 모델의 임펄스 응답을 플로팅합니다.

[x˙1x˙2]=[0.55720.78140.78140][x1x2]+[1102][u1u2]y=[1.96916.4493][x1x2]

a = [-0.5572 -0.7814;0.7814  0];
b = [1 -1;0 2];
c = [1.9691  6.4493];
sys = ss(a,b,c,0);
impulse(sys)

왼쪽 플롯은 첫 번째 입력 채널의 임펄스 응답을 보여주고, 오른쪽 플롯은 두 번째 입력 채널의 임펄스 응답을 보여줍니다.

다음과 같이 임펄스 응답 데이터를 MATLAB® 배열에 저장할 수 있습니다.

[y,t] = impulse(sys);

이 시스템에 2개의 입력이 있으므로 y는 다음과 같은 차원을 갖는 3차원 배열입니다.

size(y)
ans = 1×3

   139     1     2

(첫 번째 차원은 t의 길이입니다.) 첫 번째 입력 채널의 임펄스 응답은 다음과 같이 액세스할 수 있습니다.

ch1 = y(:,:,1);
size(ch1)
ans = 1×2

   139     1

식별된 시스템의 임펄스 데이터

식별된 선형 시스템의 임펄스 응답과 그에 대응하는 1 표준편차 불확실성을 가져옵니다.

load(fullfile(matlabroot, 'toolbox', 'ident', 'iddemos', 'data', 'dcmotordata'));
z = iddata(y, u, 0.1, 'Name', 'DC-motor');
set(z, 'InputName', 'Voltage', 'InputUnit', 'V');
set(z, 'OutputName', {'Angular position', 'Angular velocity'});
set(z, 'OutputUnit', {'rad', 'rad/s'});
set(z, 'Tstart', 0, 'TimeUnit', 's');

model = tfest(z,2);
[y,t,~,ysd] = impulse(model,2);

% Plot 3 std uncertainty
subplot(211)
plot(t,y(:,1), t,y(:,1)+3*ysd(:,1),'k:', t,y(:,1)-3*ysd(:,1),'k:')
subplot(212)
plot(t,y(:,2), t,y(:,2)+3*ysd(:,2),'k:', t,y(:,2)-3*ysd(:,2),'k:')

제한 사항

0이 아닌 D 행렬을 갖는 연속 시스템의 임펄스 응답은 t = 0에서 무한대입니다. impulse는 이 불연속성을 무시하고 t = 0에서 하한 연속성 값 Cb를 반환합니다.

한 예로 단위 같은 플롯의 속성을 변경할 수 있습니다. 플롯의 속성을 변경하는 방법에 대한 자세한 내용은 Ways to Customize Plots 항목을 참조하십시오.

알고리즘

연속시간 모델은 먼저 상태공간으로 변환됩니다. 다음과 같은 단일 입력 상태공간 모델의 임펄스 응답은

x˙=Ax+buy=Cx

초기 상태가 b인 다음과 같은 비강제 응답과 동일합니다.

x˙=Ax,x(0)=by=Cx

이 응답을 시뮬레이션하기 위해 시스템은 입력에 대한 영차수 유지를 사용하여 이산화됩니다. 샘플 시간은 시스템 동특성을 기반으로 자동으로 선택됩니다. 단, 시간 벡터 t = 0:dt:Tf가 제공된 경우는 예외이며, 이 경우에는 dt가 샘플 시간으로 사용됩니다.

R2006a 이전에 개발됨