Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

ss

상태공간 모델

설명

ss를 사용하여 실수 값 또는 복소수 값을 갖는 상태공간 모델을 만들거나 동적 시스템 모델을 상태공간 모델 형식으로 변환합니다. ss를 사용하여 일반화된 상태공간(genss) 모델 또는 불확실 상태공간(uss (Robust Control Toolbox)) 모델을 만들 수도 있습니다.

상태공간 모델은 물리 시스템을 일련의 입력, 출력, 그리고 1계 미분 방정식과 관련된 상태 변수로 수학적으로 표현한 것입니다. 상태 변수는 출력 변수의 값을 정의합니다. ss 모델 객체는 연속시간 또는 이산시간에서 SISO 또는 MIMO 상태공간 모델을 표현할 수 있습니다.

연속시간에서 상태공간 모델의 형식은 다음과 같습니다.

x˙=Ax+Buy=Cx+Du

여기서 x, uy는 각각 상태, 입력 및 출력을 나타내며 A, B, C, D는 상태공간 행렬입니다. ss 객체는 MATLAB®에서 샘플 시간, 이름 및 입력과 출력에 대한 지연 등의 기타 정보와 함께 A, B, C, D를 저장하는 상태 공간 모델을 나타냅니다.

상태, 입력 행렬 및 출력 행렬을 직접 지정하거나 다른 유형의 모델(예: 전달 함수 모델 tf)을 상태 공간 형식으로 변환하여 상태 공간 모델 객체를 만들 수 있습니다. 자세한 내용은 상태공간 모델 항목을 참조하십시오. ss 모델 객체를 사용하여 다음을 수행할 수 있습니다.

  • 선형 분석 수행

  • LTI(선형 시불변) 모델을 표현하여 제어 설계 수행

  • 다른 LTI 모델과 결합하여 더 복잡한 시스템 표현

생성

설명

예제

sys = ss(A,B,C,D)는 다음 형식의 연속시간 상태공간 모델 객체를 만듭니다.

x˙=Ax+Buy=Cx+Du

예를 들어, Nx개 상태, Ny개 출력과 Nu개 입력을 갖는 플랜트가 있다고 가정하겠습니다. 상태 공간 행렬은 다음과 같습니다.

  • ANx×Nx 실수 값 또는 복소수 값 행렬입니다.

  • BNx×Nu 실수 값 또는 복소수 값 행렬입니다.

  • CNy×Nx 실수 값 또는 복소수 값 행렬입니다.

  • DNy×Nu 실수 값 또는 복소수 값 행렬입니다.

예제

sys = ss(A,B,C,D,ts)는 샘플 시간이 ts(단위: 초)인 다음 형식의 이산시간 상태공간 모델 객체를 만듭니다.

x[n+1]=Ax[n]+Bu[n]y[n]=Cx[n]+Du[n]

샘플 시간을 지정하지 않은 상태로 두려면 ts-1로 설정하십시오.

예제

sys = ss(A,B,C,D,ltiSys)는 모델 ltisys에서 상속된 입력 이름과 출력 이름, 내부 지연 및 샘플 시간 값 등의 속성을 갖는 상태공간 모델을 만듭니다.

예제

sys = ss(D)는 정적 이득 D를 나타내는 상태공간 모델을 만듭니다. 출력 상태공간 모델은 ss([],[],[],D)와 동일합니다.

예제

sys = ss(___,Name,Value)는 위에 열거된 입력 인수 조합에 대해 하나 이상의 Name,Value 쌍 인수를 사용하여 상태공간 모델의 속성을 설정합니다.

예제

sys = ss(ltiSys)는 동적 시스템 모델 ltiSys를 상태공간 모델로 변환합니다. ltiSys에 조정 가능한 요소나 불확실 요소가 포함된 경우 ss는 이러한 요소에 현재 값이나 공칭 값을 각각 사용합니다.

예제

sys = ss(ltiSys,component)는 식별된 LTI(선형 시불변) 모델 ss의 지정된 component인 측정된 구성요소, 잡음 구성요소 또는 둘 모두를 ltiSys 객체 형식으로 변환합니다. ltiSysidtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox), idpoly (System Identification Toolbox) 또는 idgrey (System Identification Toolbox) 객체와 같이 식별된 LTI(선형 시불변) 모델인 경우에만 이 구문을 사용하십시오.

sys = ss(ssSys,'minimal')은 제어 불가능한 상태 또는 관측 불가능한 상태가 없는 최소 상태공간 실현을 반환합니다. 이 실현은 행렬 A의 차원이 가장 작은 minreal(ss(sys))와 동일합니다.

상태공간 형식으로의 변환은 SISO의 경우 고유하게 정의되지 않습니다. MIMO인 경우에도 최소의 실현을 생성한다고 보장할 수 없습니다. 자세한 내용은 Recommended Working Representation 항목을 참조하십시오.

예제

sys = ss(ssSys,'explicit')는 동적 시스템 상태공간 모델 ssSys의 명시적 상태공간 실현 (E = I)를 반환합니다. ssSys가 적정하지 않은 경우(improper) ss는 오류를 반환합니다. 명시적 상태공간 실현에 대한 자세한 내용은 상태공간 모델 항목을 참조하십시오.

입력 인수

모두 확장

상태 행렬로, Nx×Nx 행렬로 지정됩니다. 여기서 Nx는 상태의 개수입니다. 이 입력은 속성 A의 값을 설정합니다.

입력-상태 행렬로, Nx×Nu 행렬로 지정됩니다. 여기서 Nx는 상태의 개수이고 Nu는 입력의 개수입니다. 이 입력은 속성 B의 값을 설정합니다.

상태-출력 행렬로, Ny×Nx 행렬로 지정됩니다. 여기서 Nx는 상태의 개수이고 Ny는 출력의 개수입니다. 이 입력은 속성 C의 값을 설정합니다.

피드스루 행렬로, Ny×Nu 행렬로 지정됩니다. 여기서 Ny는 출력의 개수이고 Nu는 입력의 개수입니다. 이 입력은 속성 D의 값을 설정합니다.

샘플 시간으로, 스칼라로 지정됩니다. 자세한 내용은 Ts 속성을 참조하십시오.

상태공간 형식으로 변환할 동적 시스템으로, SISO 또는 MIMO 동적 시스템 모델로 지정되거나 동적 시스템 모델로 구성된 배열로 지정됩니다. 변환할 수 있는 동적 시스템은 다음과 같습니다.

  • 연속시간 또는 이산시간 수치적 LTI 모델(예: tf, zpk, ss 또는 pid 모델).

  • 일반화된 모델 또는 불확실 LTI 모델(예: genss, uss (Robust Control Toolbox) 모델). (불확실 모델을 사용하려면 Robust Control Toolbox™가 필요합니다.)

    결과 상태공간 모델은 다음을 가정합니다.

    • 조정 가능한 제어 설계 블록의 경우 조정 가능한 구성요소의 현재 값을 가정합니다.

    • 불확실한 제어 설계 블록의 경우 공칭 모델 값을 가정합니다.

  • 식별된 LTI 모델(예: idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox), idpoly (System Identification Toolbox) 또는 idgrey (System Identification Toolbox) 모델). 식별된 모델의 변환할 구성요소를 선택하려면 component를 지정하십시오. component를 지정하지 않으면 기본적으로 ss는 식별된 모델의 측정된 구성요소를 변환합니다. (식별된 모델을 사용하려면 System Identification Toolbox™가 필요합니다.)

식별된 모델의 구성요소로, 변환의 대상이며 다음 중 하나로 지정됩니다.

  • 'measured'sys의 측정된 구성요소를 변환합니다.

  • 'noise'sys의 잡음 구성요소를 변환합니다.

  • 'augmented'sys의 측정된 구성요소와 잡음 구성요소를 모두 변환합니다.

componentsys가 식별된 LTI 모델인 경우에만 적용됩니다.

식별된 LTI 모델과 그 측정된 구성요소 및 잡음 구성요소에 대한 자세한 내용은 Identified LTI Models 항목을 참조하십시오.

최소 실현 또는 명시적 형식으로 변환할 동적 시스템 모델로, ss 모델 객체로 지정됩니다.

출력 인수

모두 확장

출력 시스템 모델로, 다음과 같이 반환됩니다.

  • 상태공간 모델(ss) 객체: 입력 A, B, C, D가 숫자형 행렬이거나 다른 모델 객체 유형에서 변환하는 경우.

  • 일반화된 상태공간 모델(genss) 객체: 하나 이상의 행렬 A, B, C, D에 조정 가능한 파라미터(예: realp 파라미터) 또는 일반화된 행렬(genmat)이 포함된 경우. 예제는 고정된 파라미터와 조정 가능한 파라미터가 있는 상태공간 모델 만들기 항목을 참조하십시오.

  • 불확실한 상태공간 모델(uss) 객체: 하나 이상의 입력 A, B, C , D에 불확실한 행렬이 포함된 경우. 불확실 모델을 사용하려면 Robust Control Toolbox가 필요합니다.

속성

모두 확장

상태 행렬로, Nx×Nx 행렬로 지정됩니다. 여기서 Nx는 상태의 개수입니다. 상태 행렬은 다음과 같이 원하는 상태공간 모델 실현에 따라 여러 가지 방법으로 표현할 수 있습니다.

  • 모델 표준형

  • 동반 표준형

  • 관측 가능 표준형

  • 제어 가능 표준형

자세한 내용은 상태공간 실현 항목을 참조하십시오.

입력-상태 행렬로, Nx×Nu 행렬로 지정됩니다. 여기서 Nx는 상태의 개수이고 Nu는 입력의 개수입니다.

상태-출력 행렬로, Ny×Nx 행렬로 지정됩니다. 여기서 Nx는 상태의 개수이고 Ny는 출력의 개수입니다.

피드스루 행렬로, Ny×Nu 행렬로 지정됩니다. 여기서 Ny는 출력 개수이고 Nu는 입력 개수입니다. D는 정적 이득 행렬이라고도 하며 정상 상태 조건에서 입력에 대한 출력의 비율을 나타냅니다.

묵시적 또는 설명자 상태공간 모델에 대한 행렬로, Nx×Nx 행렬로 지정됩니다. E는 기본적으로 비어 있으며 이는 상태 방정식이 명시적임을 의미합니다. 묵시적 상태 방정식 E dx/dt = Ax + Bu를 지정하려면 이 속성을 A와 크기가 같은 정사각 행렬로 설정하십시오. 설명자 상태공간 모델을 만드는 방법에 대한 자세한 내용은 dss를 참조하십시오.

스케일링 활성화 여부를 나타내는 논리값으로, 0 또는 1로 지정됩니다.

Scaled0(비활성화됨)인 경우, 수치적 정확도를 높이기 위해 상태공간 모델 sys에 대한 대부분의 수치적 알고리즘이 자동으로 상태 벡터를 다시 스케일링합니다. Scaled1(활성화됨)로 설정하면 이러한 자동 스케일링을 방지할 수 있습니다.

스케일링에 대한 자세한 내용은 prescale을 참조하십시오.

상태 이름으로, 다음 중 하나로 지정됩니다.

  • 문자형 벡터 — 1차 모델의 경우(예: 'velocity')

  • 문자형 벡터로 구성된 셀형 배열 — 둘 이상의 상태를 갖는 모델의 경우.

StateName은 기본적으로 모든 상태에 대해 비어 있습니다(' ').

선형화에서 상태 블록 경로 관리를 용이하게 하기 위한 상태 경로로, 다음 중 하나로 지정됩니다.

  • 문자형 벡터 — 1차 모델의 경우

  • 문자형 벡터로 구성된 셀형 배열 — 둘 이상의 상태를 갖는 모델의 경우.

StatePath는 기본적으로 모든 상태에 대해 비어 있습니다(' ').

상태 단위로, 다음 중 하나로 지정됩니다.

  • 문자형 벡터 — 1차 모델의 경우(예: 'm/s')

  • 문자형 벡터로 구성된 셀형 배열 — 둘 이상의 상태를 갖는 모델의 경우.

StateUnit을 사용하여 각 상태의 단위를 추적할 수 있습니다. StateUnit은 시스템 동작에는 영향을 미치지 않습니다. StateUnit은 기본적으로 모든 상태에 대해 비어 있습니다(' ').

모델의 내부 지연으로, 벡터로 정의됩니다. 내부 지연은 일례로 지연이 있는 시스템에서 피드백 루프를 닫을 때나 지연된 시스템을 직렬 또는 병렬로 연결할 때 발생합니다. 내부 지연에 대한 자세한 내용은 Closing Feedback Loops with Time Delays 항목을 참조하십시오.

연속시간 모델의 경우 내부 지연은 모델의 TimeUnit 속성으로 지정된 시간 단위로 표현됩니다. 이산시간 모델의 경우 내부 지연은 샘플 시간 Ts의 정수 배로 표현됩니다. 예를 들어, InternalDelay = 3은 3개 샘플링 주기만큼의 지연을 의미합니다.

속성 InternalDelay를 사용하여 내부 지연의 값을 수정할 수 있습니다. 그러나 sys.InternalDelay는 모델의 구조적 속성이므로 여기에 들어 있는 요소의 개수는 변경할 수 없습니다.

각 입력 채널에 대한 입력 지연으로, 다음 중 하나로 지정됩니다.

  • 스칼라 — SISO 시스템에 대한 입력 지연을 지정하거나 다중 입력 시스템의 모든 입력에 대해 동일한 지연을 지정합니다.

  • Nu×1 벡터 — 다중 입력 시스템의 입력에 대해 개별적인 입력 지연을 지정합니다. 여기서 Nu는 입력의 개수입니다.

연속시간 시스템의 경우 TimeUnit 속성으로 지정된 시간 단위로 입력 지연을 지정합니다. 이산시간 시스템의 경우 샘플 시간 Ts의 정수 배로 입력 지연을 지정합니다.

자세한 내용은 Time Delays in Linear Systems 항목을 참조하십시오.

각 출력 채널에 대한 출력 지연으로, 다음 중 하나로 지정됩니다.

  • 스칼라 — SISO 시스템에 대한 출력 지연을 지정하거나 다중 출력 시스템의 모든 출력에 대해 동일한 지연을 지정합니다.

  • Ny×1 벡터 — 다중 출력 시스템의 출력에 대해 개별적인 출력 지연을 지정합니다. 여기서 Ny는 출력의 개수입니다.

연속시간 시스템의 경우 TimeUnit 속성으로 지정된 시간 단위로 출력 지연을 지정합니다. 이산시간 시스템의 경우 샘플 시간 Ts의 정수 배로 출력 지연을 지정합니다.

자세한 내용은 Time Delays in Linear Systems 항목을 참조하십시오.

샘플 시간으로, 다음으로 지정됩니다.

  • 연속시간 시스템의 경우 0.

  • 이산시간 시스템의 샘플링 주기를 나타내는 양의 스칼라. TsTimeUnit 속성으로 지정된 시간 단위로 지정합니다.

  • 샘플 시간이 지정되지 않은 이산시간 시스템의 경우 -1.

참고

Ts를 변경해도 모델이 이산화되거나 리샘플링되지 않습니다. 연속시간 표현과 이산시간 표현 간에 변환하려면 c2dd2c를 사용하십시오. 이산시간 시스템의 샘플 시간을 변경하려면 d2d를 사용하십시오.

시간 변수 단위로, 다음 중 하나로 지정됩니다.

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

TimeUnit을 변경해도 다른 속성에 영향을 미치지 않으나 전체적인 시스템 동작이 변경됩니다. 시스템 동작을 수정하지 않고 시간 단위 간 변환을 수행하려면 chgTimeUnit을 사용하십시오.

입력 채널 이름으로, 다음 중 하나로 지정됩니다.

  • 단일 입력 모델의 경우 문자형 벡터.

  • 다중 입력 모델의 경우 문자형 벡터로 구성된 셀형 배열.

  • 입력 채널에 대해 지정된 이름이 없는 경우 ''.

또는 자동 벡터 확장을 사용하여 다중 입력 모델에 입력 이름을 할당할 수 있습니다. 예를 들어, sys가 2-입력 모델인 경우 다음을 입력합니다.

sys.InputName = 'controls';

입력 이름이 자동으로 {'controls(1)';'controls(2)'}로 확장됩니다.

축약 표기법 u를 사용하여 InputName 속성을 참조할 수 있습니다. 예를 들어, sys.usys.InputName과 동일합니다.

InputName을 사용하여 다음을 수행할 수 있습니다.

  • 모델 표시 화면과 플롯에서 채널 식별.

  • MIMO 시스템의 서브시스템 추출.

  • 모델 상호 연결 시 연결 점 지정.

입력 채널 단위로, 다음 중 하나로 지정됩니다.

  • 단일 입력 모델의 경우 문자형 벡터.

  • 다중 입력 모델의 경우 문자형 벡터로 구성된 셀형 배열.

  • 입력 채널에 대해 지정된 단위가 없는 경우 ''.

InputUnit을 사용하여 입력 신호 단위를 지정합니다. InputUnit은 시스템 동작에 영향을 미치지 않습니다.

입력 채널 그룹으로, 구조체로 지정됩니다. InputGroup을 사용하여 MIMO 시스템의 입력 채널을 그룹으로 할당하고 각 그룹을 이름으로 참조할 수 있습니다. InputGroup의 필드 이름은 그룹 이름이고 필드 값은 각 그룹의 입력 채널입니다. 예를 들어 다음을 입력하여 각각 입력 채널 1, 2와 입력 채널 3, 5를 포함하는 controlsnoise라는 입력 그룹을 만듭니다.

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

이때 다음을 사용하여 controls 입력에서 모든 출력으로 서브시스템을 추출할 수 있습니다.

sys(:,'controls')

기본적으로 InputGroup은 필드가 없는 구조체입니다.

출력 채널 이름으로, 다음 중 하나로 지정됩니다.

  • 단일 출력 모델의 경우 문자형 벡터.

  • 다중 출력 모델의 경우 문자형 벡터로 구성된 셀형 배열.

  • 출력 채널에 대해 지정된 이름이 없는 경우 ''.

또는 자동 벡터 확장을 사용하여 다중 출력 모델에 출력 이름을 할당할 수 있습니다. 예를 들어, sys가 2-출력 모델인 경우 다음을 입력합니다.

sys.OutputName = 'measurements';

출력 이름이 자동으로 {'measurements(1)';'measurements(2)'}로 확장됩니다.

축약 표기법 y를 사용하여 OutputName 속성을 참조할 수도 있습니다. 예를 들어, sys.ysys.OutputName과 동일합니다.

OutputName을 사용하여 다음을 수행할 수 있습니다.

  • 모델 표시 화면과 플롯에서 채널 식별.

  • MIMO 시스템의 서브시스템 추출.

  • 모델 상호 연결 시 연결 점 지정.

출력 채널 단위로, 다음 중 하나로 지정됩니다.

  • 단일 출력 모델의 경우 문자형 벡터.

  • 다중 출력 모델의 경우 문자형 벡터로 구성된 셀형 배열.

  • 출력 채널에 대해 지정된 단위가 없는 경우 ''.

OutputUnit을 사용하여 출력 신호 단위를 지정합니다. OutputUnit은 시스템 동작에 영향을 미치지 않습니다.

출력 채널 그룹으로, 구조체로 지정됩니다. OutputGroup을 사용하여 MIMO 시스템의 출력 채널을 그룹으로 할당하고 각 그룹을 이름으로 참조할 수 있습니다. OutputGroup의 필드 이름은 그룹 이름이고 필드 값은 각 그룹의 출력 채널입니다. 예를 들어, 각각 출력 채널 1과 출력 채널 3, 5를 포함하는 temperaturemeasurement라는 출력 그룹을 만듭니다.

sys.OutputGroup.temperature = [1];
sys.OutputGroup.measurement = [3 5];

이때 다음을 사용하여 모든 입력에서 measurement 출력으로 서브시스템을 추출할 수 있습니다.

sys('measurement',:)

기본적으로 OutputGroup은 필드가 없는 구조체입니다.

시스템 이름으로, 문자형 벡터로 지정됩니다. (예: 'system_1'.)

사용자가 시스템에 연동하려는 사용자 지정 텍스트로, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 예를 들면 'System is MIMO'와 같습니다.

사용자가 시스템에 연동하려는 사용자 지정 데이터로, 어떤 MATLAB 데이터형으로든 지정 가능합니다.

모델 배열의 샘플링 그리드로, 구조체형 배열로 지정됩니다.

SamplingGrid를 사용하여 IDLTI(식별된 선형 시불변) 모델 배열을 비롯한 모델 배열의 각 모델에 대응되는 변수 값을 추적합니다.

구조체의 필드 이름을 샘플링 변수의 이름으로 설정합니다. 필드 값을 배열의 각 모델에 대응되는 샘플링된 변수 값으로 설정하십시오. 모든 샘플링 변수는 숫자형 스칼라여야 하며, 샘플링된 값으로 구성된 모든 배열은 모델 배열의 차원과 일치해야 합니다.

예를 들어, 시간 t = 0:10에 선형 시변 시스템의 스냅샷을 찍어서 선형 모델로 구성된 11×1 배열 sysarr을 만들 수 있습니다. 다음 코드는 시간 샘플을 선형 모델과 함께 저장합니다.

 sysarr.SamplingGrid = struct('time',0:10)

마찬가지로, 2개의 변수 zetaw를 독립적으로 샘플링하여 6×9 모델 배열 M을 만들 수 있습니다. 다음 코드는 (zeta,w) 값을 M에 매핑합니다.

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

M을 표시해 보면 배열의 각 요소가 대응되는 zeta 값과 w 값을 포함하는 것을 알 수 있습니다.

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

여러 파라미터 값 또는 동작점에서 Simulink® 모델을 선형화하여 생성된 모델 배열의 경우, SamplingGrid는 자동으로 배열의 각 요소에 대응되는 변수 값으로 채워집니다. 예를 들어, Simulink Control Design™ 명령 linearize (Simulink Control Design)slLinearizer (Simulink Control Design)는 자동으로 SamplingGrid를 채웁니다.

기본적으로 SamplingGrid는 필드가 없는 구조체입니다.

객체 함수

다음 목록은 일부이기는 하나 ss 모델 객체와 함께 사용할 수 있는 대표적인 함수들입니다. 일반적으로, 동적 시스템 모델에 적용되는 모든 함수는 ss 객체에 적용됩니다.

모두 확장

stepStep response of dynamic system
impulseImpulse response plot of dynamic system; impulse response data
lsimPlot simulated time response of dynamic system to arbitrary inputs; simulated response data
bode주파수 응답, 또는 크기 및 위상 데이터의 보드 플롯
nyquist주파수 응답의 나이퀴스트 플롯
nichols주파수 응답의 니콜스 차트
bandwidth주파수 응답 대역폭
pole동적 시스템의 극점
zeroSISO 동적 시스템의 영점 및 이득
pzplot추가적인 플롯 사용자 지정 옵션이 있는 동적 시스템 모델의 극점-영점 플롯
margin이득 여유, 위상 여유 및 교차 주파수
zpk영점-극점-이득 모델
tf전달 함수 모델
c2d연속시간 모델을 이산시간 모델로 변환
d2c이산시간 모델을 연속시간 모델로 변환
d2dResample discrete-time model
feedback여러 모델의 피드백 연결
connectBlock diagram interconnections of dynamic systems
series두 모델의 직렬 연결
parallel두 모델의 병렬 연결
pidtunePID tuning algorithm for linear plant model
rlocus동적 시스템의 근궤적 플롯
lqr선형-2차 조절기(LQR) 설계
lqg선형-2차-가우스(LQG) 설계
lqi선형-2차-적분 제어
kalman상태 추정을 위한 칼만 필터 설계

예제

모두 축소

다음 상태공간 행렬로 정의된 SISO 상태공간 모델을 만듭니다.

A=[-1.5-210]B=[0.50]C=[01]D=0

A, B, C, D 행렬을 지정하고 상태공간 모델을 만듭니다.

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D)
sys =
 
  A = 
         x1    x2
   x1  -1.5    -2
   x2     1     0
 
  B = 
        u1
   x1  0.5
   x2    0
 
  C = 
       x1  x2
   y1   0   1
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

샘플 시간 0.25초와 다음 상태공간 행렬을 사용하여 상태공간 모델을 만듭니다.

A=[01-5-2]B=[03]C=[01]D=[0]

상태공간 행렬을 지정합니다.

A = [0 1;-5 -2];
B = [0;3];
C = [0 1];
D = 0;

샘플 시간을 지정합니다.

Ts = 0.25;

상태공간 모델을 만듭니다.

sys = ss(A,B,C,D,Ts);

이 예제에서는 관성 텐서 J와 크기 0.2의 감쇠력 F로 코너를 중심으로 회전하는 정육면체를 살펴보겠습니다. 시스템에 대한 입력은 구동 토크인데 반해 출력은 각속도입니다. 정육면체에 대한 상태공간 행렬은 다음과 같습니다.

A=-J-1F,B=J-1,C=I,D=0,where,J=[8-3-3-38-3-3-38]andF=[0.20000.20000.2]

A, B, C, D 행렬을 지정하고 연속시간 상태공간 모델을 만듭니다.

J = [8 -3 -3; -3 8 -3; -3 -3 8];
F = 0.2*eye(3);
A = -J\F;
B = inv(J);
C = eye(3);
D = 0;
sys = ss(A,B,C,D)
sys =
 
  A = 
             x1        x2        x3
   x1  -0.04545  -0.02727  -0.02727
   x2  -0.02727  -0.04545  -0.02727
   x3  -0.02727  -0.02727  -0.04545
 
  B = 
           u1      u2      u3
   x1  0.2273  0.1364  0.1364
   x2  0.1364  0.2273  0.1364
   x3  0.1364  0.1364  0.2273
 
  C = 
       x1  x2  x3
   y1   1   0   0
   y2   0   1   0
   y3   0   0   1
 
  D = 
       u1  u2  u3
   y1   0   0   0
   y2   0   0   0
   y3   0   0   0
 
Continuous-time state-space model.

sys는 MIMO입니다. 이 시스템에 행렬 CD에서 관측된 3개의 입력과 3개의 출력이 있기 때문입니다. MIMO 상태공간 모델에 대한 자세한 내용은 MIMO State-Space Models 항목을 참조하십시오.

다음 이산시간, 다중 입력, 다중 출력 상태 행렬을 사용하여 샘플 시간이 ts = 0.2초인 상태공간 모델을 만듭니다.

A=[-700-10]B=[5002]C=[1-4-40.5]D=[0-220]

상태공간 행렬을 지정하고 이산시간 MIMO 상태공간 모델을 만듭니다.

A = [-7,0;0,-10];
B = [5,0;0,2];
C = [1,-4;-4,0.5];
D = [0,-2;2,0];
ts = 0.2;
sys = ss(A,B,C,D,ts)
sys =
 
  A = 
        x1   x2
   x1   -7    0
   x2    0  -10
 
  B = 
       u1  u2
   x1   5   0
   x2   0   2
 
  C = 
        x1   x2
   y1    1   -4
   y2   -4  0.5
 
  D = 
       u1  u2
   y1   0  -2
   y2   2   0
 
Sample time: 0.2 seconds
Discrete-time state-space model.

상태공간 행렬을 만들고 샘플 시간을 지정합니다.

A = [0 1;-5 -2];
B = [0;3];
C = [0 1];
D = 0;
Ts = 0.05;

이름-값 쌍으로 상태 및 입력 이름을 지정하여 상태공간 모델을 만듭니다.

sys = ss(A,B,C,D,Ts,'StateName',{'Position' 'Velocity'},...
    'InputName','Force');

상태 및 입력 이름의 개수는 A, B, C, D의 차원과 동일해야 합니다.

입력 이름과 출력 이름을 지정하면 MIMO 시스템의 응답 플롯을 처리할 때 유용할 수 있습니다.

step(sys)

Figure contains an axes object. The axes object with title From: Force To: Out(1) contains an object of type line. This object represents sys.

계단 응답 플롯 제목에 입력 이름 Force가 있습니다.

이 예제에서는 다른 상태공간 모델에서 상속된 동일한 시간 및 입력 단위 속성으로 상태공간 모델을 만듭니다. 다음과 같은 상태공간 모델이 있다고 가정하겠습니다.

A1=[-1.5-210]B1=[0.50]C1=[01]D1=5A2=[7-102]B2=[0.852]C2=[1014]D2=2

먼저 TimeUnitInputUnit 속성이 'minutes'로 설정된 상태공간 모델 sys1을 만듭니다.

A1 = [-1.5,-2;1,0];
B1 = [0.5;0];
C1 = [0,1];
D1 = 5;
sys1 = ss(A1,B1,C1,D1,'TimeUnit','minutes','InputUnit','minutes');

sys1의 시간 및 입력 단위 속성이 minutes로 설정되었는지 확인합니다.

propValues1 = [sys1.TimeUnit,sys1.InputUnit]
propValues1 = 1x2 cell
    {'minutes'}    {'minutes'}

sys1에서 상속한 속성으로 두 번째 상태공간 모델을 만듭니다.

A2 = [7,-1;0,2];
B2 = [0.85;2];
C2 = [10,14];
D2 = 2;
sys2 = ss(A2,B2,C2,D2,sys1);

sys2의 시간 및 입력 단위가 sys1에서 상속되었는지 확인합니다.

propValues2 = [sys2.TimeUnit,sys2.InputUnit]
propValues2 = 1x2 cell
    {'minutes'}    {'minutes'}

이 예제에서는 정적 이득 MIMO 상태공간 모델을 만듭니다.

다음과 같은 2-입력 2-출력 정적 이득 행렬이 있다고 가정하겠습니다.

D=[2435]

이득 행렬을 지정하고 정적 이득 상태공간 모델을 만듭니다.

D = [2,4;3,5];
sys1 = ss(D)
sys1 =
 
  D = 
       u1  u2
   y1   2   4
   y2   3   5
 
Static gain.

다음 전달 함수의 상태공간 모델을 계산합니다.

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

전달 함수 모델을 만듭니다.

H = [tf([1 1],[1 3 3 2]) ; tf([1 0 3],[1 1 1])];

이 모델을 상태공간 모델로 변환합니다.

sys = ss(H);

상태공간 모델의 크기를 검토합니다.

size(sys)
State-space model with 2 outputs, 1 inputs, and 5 states.

상태의 개수는 H(s)에 있는 SISO 항목의 누적 차수와 동일합니다.

H(s)의 최소 실현을 얻으려면 다음을 입력하십시오.

sys = ss(H,'minimal');
size(sys)
State-space model with 2 outputs, 1 inputs, and 3 states.

결과 모델의 차수는 H(s)를 나타내는 데 필요한 최소한의 상태 개수인 3입니다. 이 상태 개수를 보려면 H(s)를 1차 시스템과 2차 시스템의 곱으로 다시 분해하십시오.

H(s)=[1s+2001][s+1s2+s+1s2+3s2+s+1]

이 예제에서는 식별된 다항식 모델의 측정된 구성요소와 잡음 구성요소를 2개의 개별적인 상태공간 모델로 추출합니다.

identifiedModel.mat에서 Box-Jenkins 다항식 모델 ltiSys를 불러옵니다.

load('identifiedModel.mat','ltiSys');

ltiSysy(t)=BFu(t)+CDe(t) 형식의 식별된 이산시간 모델입니다. 여기서 BF는 측정된 구성요소를 나타내고 CD는 잡음 구성요소를 나타냅니다.

측정된 구성요소와 잡음 구성요소를 상태공간 모델로 추출합니다.

sysMeas = ss(ltiSys,'measured') 
sysMeas =
 
  A = 
            x1       x2
   x1    1.575  -0.6115
   x2        1        0
 
  B = 
        u1
   x1  0.5
   x2    0
 
  C = 
            x1       x2
   y1  -0.2851   0.3916
 
  D = 
       u1
   y1   0
 
  Input delays (sampling periods): 2 
 
Sample time: 0.04 seconds
Discrete-time state-space model.
sysNoise = ss(ltiSys,'noise')
sysNoise =
 
  A = 
           x1      x2      x3
   x1   1.026   -0.26  0.3899
   x2       1       0       0
   x3       0     0.5       0
 
  B = 
       v@y1
   x1  0.25
   x2     0
   x3     0
 
  C = 
             x1        x2        x3
   y1     0.319  -0.04738   0.07106
 
  D = 
          v@y1
   y1  0.04556
 
Input groups:        
    Name     Channels
    Noise       1    
                     
Sample time: 0.04 seconds
Discrete-time state-space model.

측정된 구성요소는 플랜트 모델로 기능할 수 있고, 잡음 구성요소는 제어 시스템 설계를 위한 외란 모델로 사용할 수 있습니다.

설명자 상태공간 모델을 만듭니다(EI).

a = [2 -4; 4 2];
b = [-1; 0.5];
c = [-0.5, -2];
d = [-1];
e = [1 0; -3 0.5];
sysd = dss(a,b,c,d,e);

시스템의 명시적 실현을 계산합니다(E = I).

syse = ss(sysd,'explicit')
syse =
 
  A = 
        x1   x2
   x1    2   -4
   x2   20  -20
 
  B = 
       u1
   x1  -1
   x2  -5
 
  C = 
         x1    x2
   y1  -0.5    -2
 
  D = 
       u1
   y1  -1
 
Continuous-time state-space model.

설명자와 명시적 실현이 동일한 동특성을 가짐을 확인합니다.

bodeplot(sysd,syse,'g--')

Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains 2 objects of type line. These objects represent sysd, syse. Axes object 2 with ylabel Phase (deg) contains 2 objects of type line. These objects represent sysd, syse.

이 예제에서는 고정된 파라미터와 조정 가능한 파라미터를 모두 갖는 상태공간 genss 모델을 만드는 방법을 보여줍니다.

A=[1a+b0ab],B=[-3.01.5],C=[0.30],D=0,

여기서 ab는 초기값이 각각 -13인 조정 가능한 파라미터입니다.

realp를 사용하여 조정 가능한 파라미터를 만듭니다.

a = realp('a',-1);
b = realp('b',3);

ab의 대수 표현식을 사용하여 일반화된 행렬을 정의합니다.

A = [1 a+b;0 a*b];

ABlocks 속성이 ab를 포함하는 일반화된 행렬입니다. A의 초기값은 ab의 초기값으로부터 도출된 [1 2;0 -3]입니다.

고정값 상태공간 행렬을 만듭니다.

B = [-3.0;1.5];
C = [0.3 0];
D = 0;

ss를 사용하여 상태공간 모델을 만듭니다.

sys = ss(A,B,C,D)
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks:
  a: Scalar parameter, 2 occurrences.
  b: Scalar parameter, 2 occurrences.

Type "ss(sys)" to see the current value and "sys.Blocks" to interact with the blocks.

sys는 조정 가능한 파라미터 ab를 갖는 일반화된 LTI 모델(genss)입니다.

이 예제에서는 다음 상태공간 행렬로 정의된 SISO 상태공간 모델을 살펴보겠습니다.

A=[-1.5-210]B=[0.50]C=[01]D=0

입력 지연이 0.5초이고 출력 지연이 2.5초라고 가정하고 상태공간 모델 객체를 만들어 A, B, C, D 행렬을 표현합니다.

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D,'InputDelay',0.5,'OutputDelay',2.5)
sys =
 
  A = 
         x1    x2
   x1  -1.5    -2
   x2     1     0
 
  B = 
        u1
   x1  0.5
   x2    0
 
  C = 
       x1  x2
   y1   0   1
 
  D = 
       u1
   y1   0
 
  Input delays (seconds): 0.5 
  Output delays (seconds): 2.5 
 
Continuous-time state-space model.

get 명령을 사용하여 MATLAB 객체의 모든 속성을 표시할 수도 있습니다.

get(sys)
                A: [2x2 double]
                B: [2x1 double]
                C: [0 1]
                D: 0
                E: []
           Scaled: 0
        StateName: {2x1 cell}
        StatePath: {2x1 cell}
        StateUnit: {2x1 cell}
    InternalDelay: [0x1 double]
       InputDelay: 0.5000
      OutputDelay: 2.5000
        InputName: {''}
        InputUnit: {''}
       InputGroup: [1x1 struct]
       OutputName: {''}
       OutputUnit: {''}
      OutputGroup: [1x1 struct]
            Notes: [0x1 string]
         UserData: []
             Name: ''
               Ts: 0
         TimeUnit: 'seconds'
     SamplingGrid: [1x1 struct]

LTI 모델의 시간 지연을 지정하는 방법에 대한 자세한 내용은 Specifying Time Delays 항목을 참조하십시오.

이 예제에서는 다음 상태 행렬을 표현하는 상태공간 System Object를 살펴보겠습니다.

A=[-1.2-1.60100010],B=[100],C=[00.51.3],D=0,State-space matrices

ss 명령을 사용하여 state-space 객체 sys를 만듭니다.

A = [-1.2,-1.6,0;1,0,0;0,1,0];
B = [1;0;0];
C = [0,0.5,1.3];
D = 0;
sys = ss(A,B,C,D);

다음으로 단위 음수 이득에 대한 폐루프 상태공간 모델을 계산하고 폐루프 상태공간 System Object인 sysFeedback의 극점을 찾습니다.

sysFeedback = feedback(sys,1);
P = pole(sysFeedback)
P = 3×1 complex

  -0.2305 + 1.3062i
  -0.2305 - 1.3062i
  -0.7389 + 0.0000i

모든 극점에 음수 실수부가 있으므로 단위 이득에 대한 피드백 루프는 안정적입니다. 폐루프 극점을 확인하여 안정성 여부를 평가할 수 있습니다. 사실 안정성이 얼마나 강인한지 또는 취약한지를 알면 더 유용합니다. 안정성을 잃기 전까지 루프 이득을 얼마나 변경할 수 있는지가 이러한 강인성에 대한 하나의 지표입니다. 근궤적 플롯을 사용하여 안정적인 루프의 k 값 범위를 추정할 수 있습니다.

rlocus(sys)

Figure contains an axes object. The axes object contains 5 objects of type line. One or more of the lines displays its values using only markers This object represents sys.

루프 이득의 변경은 강인한 안정성의 한 가지 특성에 불과합니다. 일반적으로 플랜트 모델링이 불완전하다는 것은 이득과 위상이 둘다 정확히 알려지지 않았음을 의미합니다. 모델링에 오류가 있으면 이득 교차 주파수(개루프 이득이 0dB인 주파수) 부근에서 가장 유해하므로 이 주파수에서 위상 변화가 얼마나 용인될 수 있는지도 중요합니다.

다음과 같이 보드 플롯에 이득 여유와 위상 여유를 표시할 수 있습니다.

bode(sys)
grid

Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains an object of type line. This object represents sys. Axes object 2 with ylabel Phase (deg) contains an object of type line. This object represents sys.

자세한 예제는 이득 여유 및 위상 여유 평가하기 항목을 참조하십시오.

이 예제에서는 다음 행렬로 표현되는 시스템에 대해 목표 대역폭이 0.75 rad/s인 2-DOF PID 제어기를 설계합니다.

A=[-0.5-0.110],B=[10],C=[01],D=0.

ss 명령을 사용하여 state-space 객체 sys를 만듭니다.

A = [-0.5,-0.1;1,0];
B = [1;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D)
sys =
 
  A = 
         x1    x2
   x1  -0.5  -0.1
   x2     1     0
 
  B = 
       u1
   x1   1
   x2   0
 
  C = 
       x1  x2
   y1   0   1
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

목표 대역폭으로 pidtune 항목을 사용하여 2-DOF 제어기를 생성합니다.

wc = 0.75;
C2 = pidtune(sys,'PID2',wc)
C2 =
 
                       1              
  u = Kp (b*r-y) + Ki --- (r-y) + Kd*s (c*r-y)
                       s              

  with Kp = 0.513, Ki = 0.0975, Kd = 0.577, b = 0.344, c = 0
 
Continuous-time 2-DOF PID controller in parallel form.

'PID2' 유형을 사용하면 pidtunepid2 객체로 표현되는 2-DOF 제어기를 생성하게 됩니다. 이 결과가 표시되는 것을 확인할 수 있습니다. pidtune이 설정점 가중치 b, c를 포함해 모든 제어기 계수를 조정하여 성능과 강인성의 균형을 맞추는 것도 표시됩니다.

라이브 편집기에서의 대화형 방식 PID 조정에 대한 자세한 내용은 Tune PID Controller 라이브 편집기 작업을 참조하십시오. 이 작업은 대화형 방식으로 PID 제어기를 설계할 수 있도록 해주며 라이브 스크립트에 대한 MATLAB 코드를 자동으로 생성해 줍니다.

독립 실행형 앱에서 대화형 방식으로 PID 조정을 수행하려면 PID 조정기를 사용하십시오. 앱을 사용한 제어기 설계에 대한 예제는 빠른 기준 추종을 위한 PID 제어기 설계 항목을 참조하십시오.

입력 5개와 출력 4개를 가진 상태공간 플랜트 G와 입력 3개와 출력 2개를 가진 상태공간 피드백 제어기 K가 있다고 가정하겠습니다. 플랜트 G의 출력 1, 3, 4는 제어기 K의 입력에 연결되어야 하고, 제어기 출력은 플랜트의 입력 4와 2에 연결되어야 합니다.

이 예제에서는 다음 행렬로 표현되는 GK에 대한 두 개의 연속시간 상태공간 모델을 살펴보겠습니다.

AG=[-30.40.3-0.5-2.8-0.80.20.8-3],BG=[0.400.30.20-0.2-10.1-0.9-0.50.60.90.50.20],CG=[0-0.1-10-0.21.6-0.71.51.2-1.4-0.20],DG=[0000-100.4-0.700.900.30000.20000]

AK=[-0.22.10.7-2.2-0.1-2.2-0.42.3-0.2],BK=[-0.1-2.1-0.3-0.100.6100.8],CK=[-100-0.4-0.20.3],DK=[00000-1.2]

AG = [-3,0.4,0.3;-0.5,-2.8,-0.8;0.2,0.8,-3];
BG = [0.4,0,0.3,0.2,0;-0.2,-1,0.1,-0.9,-0.5;0.6,0.9,0.5,0.2,0];
CG = [0,-0.1,-1;0,-0.2,1.6;-0.7,1.5,1.2;-1.4,-0.2,0];
DG = [0,0,0,0,-1;0,0.4,-0.7,0,0.9;0,0.3,0,0,0;0.2,0,0,0,0];
sysG = ss(AG,BG,CG,DG)
sysG =
 
  A = 
         x1    x2    x3
   x1    -3   0.4   0.3
   x2  -0.5  -2.8  -0.8
   x3   0.2   0.8    -3
 
  B = 
         u1    u2    u3    u4    u5
   x1   0.4     0   0.3   0.2     0
   x2  -0.2    -1   0.1  -0.9  -0.5
   x3   0.6   0.9   0.5   0.2     0
 
  C = 
         x1    x2    x3
   y1     0  -0.1    -1
   y2     0  -0.2   1.6
   y3  -0.7   1.5   1.2
   y4  -1.4  -0.2     0
 
  D = 
         u1    u2    u3    u4    u5
   y1     0     0     0     0    -1
   y2     0   0.4  -0.7     0   0.9
   y3     0   0.3     0     0     0
   y4   0.2     0     0     0     0
 
Continuous-time state-space model.
AK = [-0.2,2.1,0.7;-2.2,-0.1,-2.2;-0.4,2.3,-0.2];
BK = [-0.1,-2.1,-0.3;-0.1,0,0.6;1,0,0.8];
CK = [-1,0,0;-0.4,-0.2,0.3];
DK = [0,0,0;0,0,-1.2];
sysK = ss(AK,BK,CK,DK)
sysK =
 
  A = 
         x1    x2    x3
   x1  -0.2   2.1   0.7
   x2  -2.2  -0.1  -2.2
   x3  -0.4   2.3  -0.2
 
  B = 
         u1    u2    u3
   x1  -0.1  -2.1  -0.3
   x2  -0.1     0   0.6
   x3     1     0   0.8
 
  C = 
         x1    x2    x3
   y1    -1     0     0
   y2  -0.4  -0.2   0.3
 
  D = 
         u1    u2    u3
   y1     0     0     0
   y2     0     0  -1.2
 
Continuous-time state-space model.

피드백 루프에서 연결될 입력과 출력을 바탕으로 feedout 벡터와 feedin 벡터를 정의합니다.

feedin = [4 2];
feedout = [1 3 4];
sys = feedback(sysG,sysK,feedin,feedout,-1)
sys =
 
  A = 
           x1      x2      x3      x4      x5      x6
   x1      -3     0.4     0.3     0.2       0       0
   x2    1.18   -2.56    -0.8    -1.3    -0.2     0.3
   x3  -1.312   0.584      -3    0.56    0.18   -0.27
   x4   2.948  -2.929   -2.42  -0.452   1.974   0.889
   x5   -0.84   -0.11     0.1    -2.2    -0.1    -2.2
   x6   -1.12   -0.26      -1    -0.4     2.3    -0.2
 
  B = 
            u1       u2       u3       u4       u5
   x1      0.4        0      0.3      0.2        0
   x2    -0.44       -1      0.1     -0.9     -0.5
   x3    0.816      0.9      0.5      0.2        0
   x4  -0.2112    -0.63        0        0      0.1
   x5     0.12        0        0        0      0.1
   x6     0.16        0        0        0       -1
 
  C = 
           x1      x2      x3      x4      x5      x6
   y1       0    -0.1      -1       0       0       0
   y2  -0.672  -0.296     1.6    0.16    0.08   -0.12
   y3  -1.204   1.428     1.2    0.12    0.06   -0.09
   y4    -1.4    -0.2       0       0       0       0
 
  D = 
          u1     u2     u3     u4     u5
   y1      0      0      0      0     -1
   y2  0.096    0.4   -0.7      0    0.9
   y3  0.072    0.3      0      0      0
   y4    0.2      0      0      0      0
 
Continuous-time state-space model.
size(sys)
State-space model with 4 outputs, 5 inputs, and 6 states.

sysGK의 지정된 입력과 출력을 연결하여 결과로 얻은 폐루프 상태공간 모델입니다.

버전 내역

R2006a 이전에 개발됨