2017-05-14 19 views
1

하는 상태 공간 모델 폼이다 DX = 액스 + 니어 Y = 선형화MATLAB 명령 lsim은 선형화 된 상태 공간 모델에 적합합니까?

비선형 상태 공간 모델이 양식에 CX + 뒤 :

dΔx = AΔx + BΔu 
Δy = CΔx + DΔu 

여기서

Δx = [x1 - x10; x2 - x20; x3 - x30; .... ; xn - xn0] 
Δu = [u1 - u10; u2 - u20; u3 - u30; .... ; um - um0] 

x10, x20, x30, xn0, u10, u20, u30, um0은 선형화를위한 상수/초기 값입니다.

그래서! 문제는 MATLAB 명령 "lsim"에 관한 것입니다 :

이 경우
lsim (sys, u, t, x0) 

는 SYS가 lineraized 상태 공간 모델에서 A, B, C, D 행렬이다. u는 비선형 벡터, t는 시간 벡터입니다. 하지만 x0 .... x0은 x10, x20, x30, ...., xn0이라고 할 수 있습니까?

또한 u = u - u0이고 u0은, u10 u10, u20, u30, ..., um0이라고 할 수 있습니까?

예 :

u = linspace(5, 5, 100); % insignal 5 
t = linspace(0, 100, 100); % 100 seconds 
u0 = [0.2; -1.2; -3]; 
u = u - u0; % 
x0 = [-2; 2; -1] 
lsim (sys, u, t, x0) 

이 결과됩니다

Δx = [x1 - 2; x2 + 2; x3 - 1] 
Δu = [u1 + 0.2; u2 - 1.2; u3 - 3] 

내가 맞죠?

+0

당신은 당신이 잘되지 않을 수 있습니다 생각하게 어떤 이유가 있나요? 질문에 대한 대답은 "이 작업을 위해 특별히이 작업을 위해 특별히 설계된 기능입니까?" 내가 생각하기에 상대적으로 명확하다. 그래서 진짜 질문은 무엇인가? –

+0

질문은 위의 그림과 같이 선형화 된 상태 공간 모델을 시뮬레이트 할 수 있다는 것입니다. –

+0

접근 방법은 일반적으로 : 시도해보십시오. 그것이 작동하지 않으면, 당신은 그것에 대해 물어봐 –

답변

0

쉽게 구할 수있는 Simulink S-Functiondsfunc.m이 있으며 상태 공간 모델의 시뮬레이션이며 포함 된 선형화 된 상태 공간 행렬에 쉽게 적용 할 수 있으며 매 시간 단계마다 변경됩니다.

시뮬 링크 파일 dsfunc.slx을 빌드하고 sim 명령 sim('dsfunc') 명령으로 실행하십시오.

좋은 점은 S-Function이 상태를 올바르게 처리한다는 것입니다. 그리고 상태 공간 모델을 매 반복하여 상태를 한 반복에서 다른 상태로 유지하면됩니다.

또한 for 루프를 사용하면 똑같이 쉽게 수행 할 수 있습니다. 선형화 상수는 그림과 같이 포함됩니다.

function [t,u,x,y]=example2 
% Start 
dt=0.001; 
N=1000; 
n=2; 
r=1; 
t=(0:N-1)'*dt; 
u=rand(N,r); 
% First 
[A,B,C,D,x0,y0]=ABCD(t(1),zeros(n,1),u(1,:)'); 
x(1,:)=x0'; 
y(1,:)=(C*x(1,:)'+D*u(1,:)'+y0)'; 
% Cycle 
for i=2:N 
    [A,B,C,D,x0,y0]=ABCD(t(i),x(i-1,:)',u(i-1,:)'); 
    x(i,:)=(A*x(i-1,:)'+B*u(i-1,:)'+x0)'; 
    y(i,:)=(C*x(i,:)'+D*u(i,:)'+y0)'; 
end 
plot(t,[u x y]);legend({'u' 'x1' 'x2' 'y'}); 


function [A,B,C,D,x0,y0]=ABCD(t,x,u) 
A=[0.1 -0.9;0 0.1]; 
B=0.5*ones(2,1); 
C=[1 1]; 
x0=[0];y0=[0]; 

enter image description here

+0

고마워! 하지만 lsim 명령을 사용하는 것을 선호합니다. –

+0

그래, 몇 점에서 선형화하기를 원한다. 선형 모델 만 있으면됩니다. 괜찮습니다 : \. – hyprfrcb