2017-09-08 1 views
1

equationsToMatrix 함수를 사용하여 거꾸로 된 (1 피스) 진자의 상태 공간 모델을 찾으려고합니다. 나는 다음과 같은 코드를 사용하고 있습니다 :함수 (종속 변수)가있는 equationsToMatrix 사용

Error using sym.getEqnsVars >checkVariables (line 92)
The second argument must be a vector of symbolic variables.

Error in sym.getEqnsVars (line 54)
checkVariables(vars);

Error in sym/equationsToMatrix (line 55)
[eqns,vars] = sym.getEqnsVars(argv{:});

Error in Linearization_Test (line 10)
[A,B]=equationsToMatrix([eqn2L,eqn1L],[x(t),dx(t),th(t),dth(t)])

방법이 오류를 해결하려면 :

%Declaration of Variables 
syms x(t) t M m ddx(t) l th(t) ddth(t) dth(t) b1 b2 dx(t) F(t) I 

%Nonlinear Equations 
eqn1=eq((I+m*l^2)*ddth+m*l*cos(th)*ddx-m*g*l*sin(th)+b2*dth,0) 
eqn2=eq((M+m)*ddx+m*l*cos(th)*ddth-m*l*sin(th)*(dth)^2+b1*dx,F) 

%Linear Equations 
eqn1L=subs (eqn1,[cos(th),sin(th(t)),dth(t)^2],[1,th(t),0]) 
eqn2L=subs (eqn2,[cos(th),sin(th(t)),dth(t)^2],[1,th(t),0]) 

%Finding State Space Model 
[A,B]=equationsToMatrix([eqn2L,eqn1L],[x(t),dx(t),th(t),dth(t)]) 
C=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]; 
D=[0;0;0;0]; 

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

MATLAB은 다음과 같은 오류가 발생합니다?

답변

1

당신은 시간 의존성이없는 사람과 변수를 대체한다 : 대답은 직접 오른쪽했지만, 인 (이 질문과 답변, 상태 공간 모델을 읽을 수 있습니다 사람들을 위해 관심을주고

syms x_ dx_ th_ dth_ 
X = [x(t),dx(t),th(t),dth(t)]; 
X_ = [x_,dx_,th_,dth_]; 
[A,B]=equationsToMatrix(subs([eqn2L,eqn1L], X, X_),X_) 
+1

문제의 영역 밖으로) 추가 수정이 필요합니다. –

+0

@IsamAsaad는 임의의 Google 직원이이 게시물을 방문하는 경우를 대비해 (주석이있을 수 있음) 그러한 수정 사항을 언급하는 것을 고려합니다. –

+0

@Sardar Usama 물론, A 및 B 행렬은 아직 원하는 상태 공간 모델을 구성하는 데 사용할 수 없다고 말하고 싶었습니다. –

관련 문제