ss2tf
상태공간 표현식(State-Space Representation)을 전달 함수로 변환하기
설명
예제
1차원의 이산시간 진동 시스템은 단위 탄성 상수를 갖는 스프링으로 벽에 연결된 단위 질량 으로 구성됩니다. 센서가 질량의 가속도 를 Hz로 샘플링합니다.
50개의 시간 샘플을 생성합니다. 샘플링 간격 을 정의합니다.
Fs = 5; dt = 1/Fs; N = 50; t = dt*(0:N-1);
진동자는 상태공간 방정식(State-Space Equation)으로 설명할 수 있습니다.
여기서 은 상태 벡터로, 과 는 질량의 위치와 속도를 각각 나타내고, 행렬은 다음과 같습니다.
A = [cos(dt) sin(dt);-sin(dt) cos(dt)]; B = [1-cos(dt);sin(dt)]; C = [-1 0]; D = 1;
시스템에 양의 방향으로 단위 임펄스를 가합니다. 상태공간 모델을 사용하여 모든 초기 상태값이 0인 시공간 시스템의 변화를 계산합니다.
u = [1 zeros(1,N-1)]; x = [0;0]; for k = 1:N y(k) = C*x + D*u(k); x = A*x + B*u(k); end
질량의 가속도를 시간 함수로 플로팅합니다.
stem(t,y,'filled') xlabel('t')
전달 함수 H(z)를 사용하여 시간 종속 가속도를 계산하여 입력값을 필터링합니다. 결과를 플로팅합니다.
[b,a] = ss2tf(A,B,C,D); yt = filter(b,a,u); stem(t,yt,'filled') xlabel('t')
시스템의 전달 함수는 다음과 같은 해석적 표현을 갖습니다.
표현식을 사용하여 입력값을 필터링합니다. 응답을 플로팅합니다.
bf = [1 -(1+cos(dt)) cos(dt)]; af = [1 -2*cos(dt) 1]; yf = filter(bf,af,u); stem(t,yf,'filled') xlabel('t')
결과는 세 가지 경우 모두 동일합니다.
이상적인 1차원 진동 시스템은 두 벽 사이에 있는 두 개의 단위 질량 과 로 구성됩니다. 각 질량은 단위 탄성 상수를 갖는 스프링으로 가장 가까운 벽에 연결됩니다. 이러한 또 다른 스프링이 두 질량을 연결합니다. 센서가 질량의 가속도인 과 를 Hz로 샘플링합니다.
총 측정 시간을 16초로 지정합니다. 샘플링 간격 을 정의합니다.
Fs = 16; dt = 1/Fs; N = 257; t = dt*(0:N-1);
시스템은 다음 상태공간 모델로 설명할 수 있습니다.
여기서 은 상태 벡터로, 와 는 각각 번째 질량의 위치와 속도를 나타냅니다. 입력 벡터 이고 출력 벡터 입니다. 상태공간 행렬은 다음과 같습니다.
연속시간 상태공간 행렬은 다음과 같습니다.
는 적절한 크기의 단위 행렬을 나타냅니다.
Ac = [0 1 0 0; -2 0 1 0; 0 0 0 1; 1 0 -2 0]; A = expm(Ac*dt); Bc = [0 0; 1 0; 0 0; 0 1]; B = Ac\(A-eye(4))*Bc; C = [-2 0 1 0; 1 0 -2 0]; D = eye(2);
첫 번째 질량 이 양의 방향으로 단위 임펄스를 받습니다.
ux = [1 zeros(1,N-1)]; u0 = zeros(1,N); u = [ux;u0];
모델을 사용하여 모든 항목이 0인 초기 상태에서 시스템의 시간 변화를 계산합니다.
x = [0 0 0 0]'; y = zeros(2,N); for k = 1:N y(:,k) = C*x + D*u(:,k); x = A*x + B*u(:,k); end
두 질량의 가속도를 시간 함수로 플로팅합니다.
stem(t,y','.') xlabel('t') legend('a_1','a_2') title('Mass 1 Excited') grid
시스템을 전달 함수 표현식으로 변환합니다. 시스템이 첫 번째 질량에 양의 단위 임펄스를 받아 어떤 반응을 하는지 알아봅니다.
[b1,a1] = ss2tf(A,B,C,D,1); y1u1 = filter(b1(1,:),a1,ux); y1u2 = filter(b1(2,:),a1,ux);
결과를 플로팅합니다. 전달 함수를 사용해도 상태공간 모델을 사용한 것과 반응이 동일합니다.
stem(t,[y1u1;y1u2]','.') xlabel('t') legend('a_1','a_2') title('Mass 1 Excited') grid
시스템이 초기 구성으로 초기화됩니다. 이제 다른 질량 가 양의 방향으로 단위 임펄스를 받습니다. 시스템의 시간 변화를 계산합니다.
u = [u0;ux]; x = [0;0;0;0]; for k = 1:N y(:,k) = C*x + D*u(:,k); x = A*x + B*u(:,k); end
가속도를 플로팅합니다. 각 질량의 반응이 바뀝니다.
stem(t,y','.') xlabel('t') legend('a_1','a_2') title('Mass 2 Excited') grid
시스템이 두 번째 질량에 양의 단위 임펄스를 받아 어떤 반응을 하는지 알아봅니다.
[b2,a2] = ss2tf(A,B,C,D,2); y2u1 = filter(b2(1,:),a2,ux); y2u2 = filter(b2(2,:),a2,ux);
결과를 플로팅합니다. 전달 함수를 사용해도 상태공간 모델을 사용한 것과 반응이 동일합니다.
stem(t,[y2u1;y2u2]','.') xlabel('t') legend('a_1','a_2') title('Mass 2 Excited') grid
입력 인수
상태 행렬로, 행렬로 지정됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n 상태 변수로 설명될 경우 A
는 n×n입니다.
데이터형: single
| double
입력-상태 행렬로, 행렬로 지정됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n 상태 변수로 설명될 경우 B
는 n×p입니다.
데이터형: single
| double
상태-출력 행렬로, 행렬로 지정됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n 상태 변수로 설명될 경우 C
는 q×n입니다.
데이터형: single
| double
피드스루 행렬로, 행렬로 지정됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n 상태 변수로 설명될 경우 D
는 q×p입니다.
데이터형: single
| double
입력 인덱스로, 정수 스칼라로 지정됩니다. 시스템이 p개 입력값을 가지면 ss2tf
에 후행 인수 ni
= 1, …, p를 사용하여 ni
번째 입력값에 적용된 단위 임펄스에 대한 응답을 계산합니다.
데이터형: single
| double
출력 인수
전달 함수의 분자 계수로, 벡터나 행렬로 반환됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n 상태 변수로 설명될 경우, 각 입력값에 대해 b
는 q×(n+1)입니다. 계수는 내림차순으로 정렬된 s 또는 z로 반환됩니다.
전달 함수의 분모 계수로, 벡터로 반환됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n 상태 변수로 설명될 경우 각 입력값에 대해 a
는 1×(n+1)입니다. 계수는 내림차순으로 정렬된 s 또는 z로 반환됩니다.
세부 정보
이산시간 시스템에서 상태공간 행렬은 상태 벡터 x, 입력값 u, 출력값 y의 관계를 다음과 같이 규정합니다.
전달 함수는 시스템의 임펄스 반응에 대한 Z 변환입니다. 또한 상태공간 행렬로 다음과 같이 표현할 수 있습니다.
연속시간 시스템에서 상태공간 행렬은 상태 벡터 x, 입력값 u, 출력값 y의 관계를 다음과 같이 규정합니다.
전달 함수는 시스템의 임펄스 반응에 대한 라플라스 변환입니다. 또한 상태공간 행렬로 다음과 같이 표현할 수 있습니다.
버전 내역
R2006a 이전에 개발됨
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)