为什么在对周期性离散时间信号进行最小二乘拟合时要排除最后一点?

信息处理 自由度 阶段 最小二乘
2022-02-12 00:42:53

我将函数 f(t)=A_o+A_1 cos(wt)+B_1 sin(wt) 拟合到以下周期性离散信号:

t=0:0.15:1.5;

y=[2.200 1.595 1.031 0.722 0.786 1.200 1.805 2.369 2.678 2.614 2.200];

其中 w=2*pi / T,T=1.5 秒。

恰好拟合曲线相对于数据呈现相移。我查阅了有关该主题的书籍,发现我应该排除该系列的最后一点才能获得正确的答案,...

拟合曲线 N-1 个点

拟合曲线 N 点

我怀疑这件事与DFT 计算中最后一点的排除有关,但没有找到可以证明这一说法的数学论据。

我将不胜感激有关此事的任何数学解释。

2个回答

第一个(错误)答案(为了完整性) 最后一点的值与第一个相同。正如您显然知道频率一样,这一点超过了“基本期”。听起来这个附加点就像是对该时期第一点的隐含双重权重。y

第二步:我试图拟合数据,不管有没有最后一点。这两种情况似乎都很合适。

正弦拟合

%https://dsp.stackexchange.com/questions/71164/why-should-the-last-point-be-excluded-when-performing-a-least-squares-fit-of-a-d
clear;close all
%% Settings
T = 1.5; w=2*pi / T;
t = (0:0.15:1.5)';
y = [2.200 1.595 1.031 0.722 0.786 1.200 1.805 2.369 2.678 2.614 2.200]';

%% Fitting all points
ft = fittype(@(a1,a2,a3,x) a1+a2*cos(w*x)+a3*sin(w*x),'coefficients',{'a1','a2','a3'},'independent', {'x'});
f = fit( t, y, ft );
% Plot fit
subplot(2,1,1)
plot( f, t, y )
axis([t(1) t(end) 0.5 3])
grid on
title('Whole point set')
%% Fitting all points but the last
ft = fittype(@(a1,a2,a3,x) a1+a2*cos(w*x)+a3*sin(w*x),'coefficients',{'a1','a2','a3'},'independent', {'x'});
f = fit( t(1:end-1), y(1:end-1), ft );
% Plot fit
subplot(2,1,2)
plot( f,  t(1:end-1), y(1:end-1) )
axis([t(1) t(end) 0.5 3])
grid on
title('Whole point set minus 1')

正如Laurent 的回答中所解释的那样,包括最后一点(等于第一点),与所有其他点相比,该点的权重只是其两倍。这并不能解释您的近似值中的相移。如果你做对了,你实际上会得到一个几乎完美的配合,即使最后一点包括在内:

t = 0:0.15:1.5;
y = [2.200 1.595 1.031 0.722 0.786 1.200 1.805 2.369 2.678 2.614 2.200];
t = t(:); y = y(:);
L = 长度(t);
w0 = 2*pi/1.5;
M = [ones(L,1),cos(w0*t),sin(w0*t)];
x = M\y; % 最优系数
f = M*x;% 逼近函数
e = f - y; % 近似误差
   f(t) y

   2.19999 2.20000
   1.59540 1.59500
   1.03076 1.03100
   0.72175 0.72200
   0.78639 0.78600
   1.20001 1.20000
   1.80460 1.80500
   2.36924 2.36900
   2.67825 2.67800
   2.61361 2.61400
   2.19999 2.20000

如果您排除优化中的最后一点,则结果几乎相同。唯一的区别是第一个点的近似误差,当包括最后一个点(与第一个点相同)时,它会稍微小一些,因为在这种情况下,与不包括最后一个点时相比,该点的权重是两倍。第一点的近似误差f(t1)y1-5.8462e-06包含最后一点,排除-7.6001e-06最后一点。