使用函数的线性组合进行信号逼近

信息处理 matlab 在家工作 连续信号 近似
2022-02-14 07:35:40

我如何近似信号x(t)=0.001t3exp(0.1t)在区间[0,100]使用以下函数的线性组合:

f1(t)=A1

f2(t)=A2cos(0.05t)

f3(t)=A3cos(0.1t)

f4(t)=A4cos(0.2t+1)exp(0.2t)

f5(t)=A5t3

我尝试编写一个matlab代码。它是否正确?

t=[0:100];
x_t=0.001*(t.^3).*exp(-0.1*t); %signal given for aproximation
f1_t=x_t.^0;
f2_t=cos(0.05*x_t);
f3_t=cos(0.1*x_t);
f4_t=cos(0.2*x_t+1).*exp(-0.2*x_t);
f5_t=x_t.^3;
M=[f1_t' f2_t' f3_t' f4_t' f5_t']; %matrix with linear components
A=M\x_t'; %matrix with coefficients
f_t=(A(1)*f1_t)+(A(2)*f2_t)+(A(3)*f3_t)+(A(4)*f4_t)+(A(5)*f5_t);
figure(1),plot(f_t);
1个回答

您选择的方法是标准最小二乘近似,即最小化所选网格上的平方误差之和。您可以通过以最小二乘法求解超定线性方程组来获得系数。我认为这是一种非常理智的做法。