matlab中没有切比雪夫拟合的现成算法,这里把我程序中的这部分抽出来,说一下。
1、首先是切比雪夫计算式
function [ res ] = ChebyShev(num,i) if i==
res=;
elseif i==
res=num;
else
res=*num*ChebyShev(num,i-)-ChebyShev(num,i-);
end end
2、计算拟合系数
function [ coeff ] = ChebyCoeff( xfile,timefile ) x=load(xfile);
time=load(timefile);
B=zeros(length(time),); %B
L=x;%L
sec_start=time();
sec_end=time(end);
for i=:length(time)
chang_sec=(*time(i)-(sec_start+sec_end))/(sec_end-sec_start);
for j=:
B(i,j)=ChebyShev(chang_sec,j);
end
end
coeff=(B'*B)\(B'*L);
end
3、根据系数计算拟合值
function [ res ] = ChebyValue( timefile,coeff,num ) res=;
time=load(timefile);
change_time=(*num-(time()+time(end)))/(time(end)-time());
for i=:length(coeff)
res=res+coeff(i)*ChebyShev(change_time,i);
end end