Main Content

tf2ss

전달 함수 필터 파라미터를 상태공간 형식으로 변환

설명

예제

[A,B,C,D] = tf2ss(b,a)는 연속시간 또는 이산시간 단일 입력값 전달 함수를 그에 상응하는 상태공간 표현으로 변환합니다.

예제

모두 축소

다음 전달 함수로 정의되는 시스템이 있다고 가정하겠습니다.

H(s)=[2s+3s2+2s+1]s2+0.4s+1.

tf2ss를 사용하여 이 시스템을 상태공간 형식으로 변환합니다.

b = [0 2 3; 1 2 1];
a = [1 0.4 1];
[A,B,C,D] = tf2ss(b,a)
A = 2×2

   -0.4000   -1.0000
    1.0000         0

B = 2×1

     1
     0

C = 2×2

    2.0000    3.0000
    1.6000         0

D = 2×1

     0
     1

1차원의 이산시간 진동 시스템은 단위 탄성 상수를 갖는 스프링으로 벽에 연결된 단위 질량 m으로 구성됩니다. 센서가 질량의 가속도 aFs=5Hz로 샘플링합니다.

50개의 시간 샘플을 생성합니다. 샘플링 간격을 Δt=1/Fs로 정의합니다.

Fs = 5;
dt = 1/Fs;
N = 50;
t = dt*(0:N-1);
u = [1 zeros(1,N-1)];

시스템의 전달 함수는 다음과 같은 해석적 표현을 갖습니다.

H(z)=1-z-1(1+cosΔt)+z-2cosΔt1-2z-1cosΔt+z-2.

시스템에 양의 방향으로 단위 임펄스를 가합니다. 전달 함수를 사용하여 시스템의 시간 변화를 계산합니다. 응답을 플로팅합니다.

bf = [1 -(1+cos(dt)) cos(dt)];
af = [1 -2*cos(dt) 1];
yf = filter(bf,af,u);

stem(t,yf,'o')
xlabel('t')

Figure contains an axes object. The axes object with xlabel t contains an object of type stem.

시스템의 상태공간 표현을 구합니다. 모두 0으로 구성된 초기 상태에서 시작하여 시간 변화를 계산합니다. 이를 전달 함수 예측값과 비교합니다.

[A,B,C,D] = tf2ss(bf,af);

x = [0;0];
for k = 1:N
    y(k) = C*x + D*u(k);
    x = A*x + B*u(k);
end

hold on
stem(t,y,'*')
hold off
legend('tf','ss')

Figure contains an axes object. The axes object with xlabel t contains 2 objects of type stem. These objects represent tf, ss.

입력 인수

모두 축소

전달 함수의 분자 계수로, 벡터 또는 행렬로 지정됩니다. b가 행렬이면 b의 각 행은 시스템의 출력값에 대응됩니다.

  • 이산시간 시스템의 경우 b는 z의 거듭제곱 내림차순으로 정렬된 계수를 포함합니다.

  • 연속시간 시스템의 경우 b는 s의 거듭제곱 내림차순으로 정렬된 계수를 포함합니다.

이산시간 시스템의 경우 b의 열 개수는 a의 길이와 동일해야 합니다. 개수가 다른 경우 0을 채워서 같게 만드십시오. eqtflength 함수를 사용하여 이를 수행할 수 있습니다.

전달 함수의 분모 계수로, 벡터로 지정됩니다.

  • 이산시간 시스템의 경우 a는 z의 거듭제곱 내림차순으로 정렬된 계수를 포함합니다.

  • 연속시간 시스템의 경우 a는 s의 거듭제곱 내림차순으로 정렬된 계수를 포함합니다.

출력 인수

모두 축소

상태 행렬로, 행렬로 반환됩니다. 시스템이 n개 상태 변수로 설명될 경우 A는 n×n입니다.

데이터형: single | double

입력-상태 행렬로, 행렬로 반환됩니다. 시스템이 n개 상태 변수로 설명될 경우 B는 n×1입니다.

데이터형: single | double

상태-출력 행렬로, 행렬로 반환됩니다. 시스템이 q개 출력값을 갖고 n개 상태 변수로 설명될 경우 C는 q×n입니다.

데이터형: single | double

피드스루 행렬로, 행렬로 반환됩니다. 시스템이 q개 출력값을 가질 경우 D는 q×1입니다.

데이터형: single | double

세부 정보

모두 축소

전달 함수

tf2ss는 지정된 시스템에 대한 전달 함수 표현의 파라미터를 그에 상응하는 상태공간 표현의 파라미터로 변환합니다.

  • 이산시간 시스템에서 상태공간 행렬은 상태 벡터 x, 입력값 u, 출력값 y와 다음 관계를 가집니다.

    x(k+1)=Ax(k)+Bu(k),y(k)=Cx(k)+Du(k).

    전달 함수는 시스템의 임펄스 응답에 대한 Z 변환입니다. 또한 상태공간 행렬로 다음과 같이 표현할 수 있습니다.

    H(z)=C(zIA)1B+D.

  • 연속시간 시스템에서 상태공간 행렬은 상태 벡터 x, 입력값 u, 출력값 y와 다음 관계를 가집니다.

    x˙=Ax+Bu,y=Cx+Du.

    전달 함수는 시스템의 임펄스 응답에 대한 라플라스 변환입니다. 또한 상태공간 행렬로 다음과 같이 표현할 수 있습니다.

    H(s)=B(s)A(s)=b1sn1++bn1s+bna1sm1++am1s+am=C(sIA)1B+D.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | | |