MATLAB 中M文件的调用问题,我复制了一个m文件运行出错求指导!

function decoupling_pole(A , B , C, D , pole)
G1 =ss(A , B , C, D); G =tf(G1);
[ z,p,k] =zpkdata(G(:,: ),’v’);
for k =1 : length(z)
z1(k)=length(z{ k} );
end
for k =1 : length(p)
p1(k)=length(p{ k} );
end
m =size(B, 2);
for i =1 : m
for j =1 : m d1(i,j)=length(p{ i,j} ) - length(z{ i,j} );
end
end
for k =1 : m;
d(k)=min(d1(k , : ))- 1 ;
end
[ num1 , den1] =tfdata(G(: , : ),’ v’ );
syms t
num=[ t] ; den =[ t] ;
for i =1 : m
for j =1 : m
num(i,j)=poly2sym(num1{i,j});
end
end
for i =1 : m
for j =1 : m
den(i , j)=poly2sym(den1{ i,j} );
end
end
Gg =num./ den ;
d ;
syms x
E1 =[ x , x] ;
for k =1 : m
E1(k , : )=x^ (d(k)+1)*Gg(k , : );
end
E=limit(E1 , x , inf);
if det(E)==0 , error(’ E 奇异, 系统不能实现动态
解耦’ );
end
if det(E)~ =0 , disp(’ E 非奇异, 系统可以实现动态解耦’ );
end
n =size(A , 1); p =d +ones(1 ,m);
q(1)=p(1);
for k =1 : m - 1
q(k +1)=q(k)+p(k +1);
end
a=[ 0 , q] ;
for k =1 : m
s =eye(n);
for i =a(k)+1 : a(k +1)
s =(A - pole(i)*eye(n))*s ;
end
F(k , : )=C(k , : )*s ;
end
L =inv(E)
K =inv(E)*F
syms s
disp(’ 符合给定极点的解耦系统的传递函数’ )
Gkl =C*inv((s *eye(size(A , 1))- A +B *K))*
B*L

第1个回答  2019-09-19
直接调用就可以了啊,但是要先把你定义的函数放在work文件夹里。
第2个回答  2015-12-09
函数文件不能直接运行,需要在其他m文件或主窗口中调用追问

matlab 不识别m文件怎么回事啊能加个好友吗??

本回答被提问者采纳
相似回答