sfang9902
2008-06-16, 20:36
clear
close all
x =[1 2 3 4 5 6 7 8] %有待输入
N=max(size(x));
order=5;
ef=zeros(order+1,N);%ef是前项误差
eb=zeros(order+1,N);%bf是后项误差
%mse=zeros(order+1,1);mse是预测误差功率
%r=zeros(order+1,1);
a=zeros(order+1,order+1);
a(:,1)=1;
ef(1,:)=x;
eb(1,:)=x;
mse(1)=sum(x.^2)/N;
for m=1:order
ef_temp=ef(m,m+1:N);
bf_temp=eb(m,m:N-1);
r(m+1)=2*sum(ef_temp.*bf_temp)/sum(ef_temp.*ef_temp+bf_temp.*bf_temp);
mse(m+1)=(1-(r(m+1))^2)*mse(m);
ef(m+1,:)=ef(m,:)+[0,r(m+1)*eb(m,1:N-1)];
eb(m+1,:)=[0,eb(m,1:N-1)]+r(m+1)*ef(m,:);
for i=1:k
a(m+1,i+1)=a(m,i+1)+r(m+1)*a(m,m-i+1);
end
end
mse(order+1)
l=a(order+1,:)
close all
x =[1 2 3 4 5 6 7 8] %有待输入
N=max(size(x));
order=5;
ef=zeros(order+1,N);%ef是前项误差
eb=zeros(order+1,N);%bf是后项误差
%mse=zeros(order+1,1);mse是预测误差功率
%r=zeros(order+1,1);
a=zeros(order+1,order+1);
a(:,1)=1;
ef(1,:)=x;
eb(1,:)=x;
mse(1)=sum(x.^2)/N;
for m=1:order
ef_temp=ef(m,m+1:N);
bf_temp=eb(m,m:N-1);
r(m+1)=2*sum(ef_temp.*bf_temp)/sum(ef_temp.*ef_temp+bf_temp.*bf_temp);
mse(m+1)=(1-(r(m+1))^2)*mse(m);
ef(m+1,:)=ef(m,:)+[0,r(m+1)*eb(m,1:N-1)];
eb(m+1,:)=[0,eb(m,1:N-1)]+r(m+1)*ef(m,:);
for i=1:k
a(m+1,i+1)=a(m,i+1)+r(m+1)*a(m,m-i+1);
end
end
mse(order+1)
l=a(order+1,:)