急需matlab 模型降阶程序。。最小二乘法或者NLJ的。。最好能有解释。。谢谢 邮箱 155132890@qq.com

对象是3*3的。。传递函数还相当复杂。。
a=[157.6942*s/(8.8999*s+1)/(45.8783*s+1) 3.1904/(94.4774*s+1)/(22.7701*s+1)/(128.0847*s+1) 0 ; -42.2122/(105.3025*s+1)/(87.7958*s+1) 0.3027/(8.2968*s+1)/(101.5385*s+1) 10.5315*s/(75.0311*s+1)/(41.2927*s+1)/(105.754*s+1) ;0 1.9382/(145.7527*s+1)/(30.4466*s+1)/(75.3121*s+1) -4.9925/(10.8201*s+1)/(16.5258*s+1)/(2.29878*s+1)]

第1个回答  2011-06-04
直接法
复制内容到剪贴板
代码:
function A=multifit(X,Y,m)
%A--输出的拟合多项式的系数
N=length(X);
M=length(Y);
if(N ~= M)
disp('数据点坐标不匹配!');
return;
end

c(1:(2*m+1))=0;
b(1:(m+1))=0;

for j=1:(2*m+1) %求出c和b
for k=1:N
c(j)=c(j)+X(k)^(j-1);
if(j<(m+2))
b(j)=b(j)+Y(k)*X(k)^(j-1);
end
end
end

C(1,:)=c(1:(m+1));
for s=2:(m+1)
C(s,:)=c(s:(m+s));
end

A=b'\C; %直接求解法求出拟合系数
最小二乘法
复制内容到剪贴板
代码:

function a=ZJZXEC(x,y,m)
if(length(x) == length(y))
n = length(x);
else
disp('x和y的维数不相等!');
return;
end %维数检查
syms v;
d = zeros(1,m+1);
q = zeros(1,m+1);
alpha = zeros(1,m+1);
for k=0:m
px(k+1)=power(v,k);
end %x的幂多项式
B2 = [1];
d(1) = n;
for l=1:n
q(1) = q(1) + y(l);
alpha(1) = alpha(1) + x(l);
end
q(1) = q(1)/d(1);
alpha(1) = alpha(1)/d(1);
a(1) = q(1);
B1 = [-alpha(1) 1];
for l=1:n
d(2) = d(2) + (x(l)-alpha(1))^2;
q(2) = q(2) + y(l)*(x(l)-alpha(1));
alpha(2) = alpha(2) + x(l)*(x(l)-alpha(1))^2;
end
q(2) = q(2)/d(2);
alpha(2) = alpha(2)/d(2);
a(1) = a(1)+q(2)*(-alpha(1));
a(2) = q(2);
beta = d(2)/d(1);
for i=3:(m+1)
B = zeros(1,i);
B(i) = B1(i-1);
B(i-1) = -alpha(i-1)*B1(i-1)+B1(i-2);
for j=2:i-2
B(j) = -alpha(i-1)*B1(j)+B1(j-1)-beta*B2(j);
end
B(1) = -alpha(i-1)*B1(1)-beta*B2(1);
BF = B*transpose(px(1:i));
for l=1:n
Qx = subs(BF,'v',x(l));
d(i) = d(i) + (Qx)^2;
q(i) = q(i) + y(l)*Qx;
alpha(i) = alpha(i) + x(l)*(Qx)^2;
end
alpha(i) = alpha(i)/d(i);
q(i) = q(i)/d(i);
beta = d(i)/d(i-1);
for k=1:i-1
a(k) = a(k)+q(i)*B(k);
end
a(i) = q(i)*B(i);
B2 = B1;
B1 = B;
end本回答被提问者采纳
第2个回答  2011-06-04
MATLAB提供了一些实用的模型降阶与实现的函数,常用的模型降阶方法有:
(1)最小实现。函数minreal()用于最小实现与零极点对消。最小实现是一种模型的实现,它消除了模型中过多的或不必要的状态。对传递函数或零极点增益模型,该函数等阶于将可彼此对消的零极点进行对消。
(2)平衡实现。函数balreal()用于查找具有相等对角可控性的可观性的实现算法,这种平衡模型有利于模型的降阶。需要强调的是,只有稳定的系统才可以进行平衡化处理。
(3)modred()——模型降阶。modred()函数可以在保持稳定状态输入与输出关系的前提下,降低状态空间模型的阶数,因此在清除快速高频状态时,非常有用。
常采用modrred()函数与balreal()函数配合使用。具体的使用方法,你可以查一下帮助。

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答