为什么我的傅里叶级数不能正常工作?

Why my Fourier series not working correct?

为什么我的傅立叶不能正常工作?我哪里做错了?我写的时域对不对?我使用的信号方程是这样的:

f = 5;    %fixed signal frequency 
fs = 100; %fixed sample frequency (100Hz)
A=1;      %fixed amplitude (1) 
l=1;      % (sec) fixed signal length 

k = app.FourierSerieslength.Value; %myFourier series length is 1 to 21
t = 0:1/fs:l-1/fs;
% y = A*sin(2*pi*f*t*k);
y = (4*A/pi)*1/k*sin(2*pi*f*t*k);  %Fourier series for the square wave signal
plot(app.UIAxes,t,y);

我的傅立叶长度为 3 的结果是:

傅里叶级数长度为 10 的结果:

长度 10 是否正确?
为什么我没有方波?

另外一个问题是我用这个傅里叶级数Up-/Downsampling时域视图没有变化?

这是我的上采样代码:

up = app.UpSamplingSlider.Value;
y_up = zeros(1,length(y)*4);
y_up(1:4:4*length(y)) = y;
y_up = up*y_up;
stem(app.UIAxes3,y_up);
y = (4*A/pi)*1/k*sin(2*pi*f*t*k);  %Fourier series for the square wave signal

不,这不是一个系列,它是一个正弦波。当 k=10 时,这会减少到一些常数时间 sin(pi*(0:99)),它在任何地方都为零(达到数值精度)。每当您看到垂直轴有一个 10E-14 乘数时,您就可以相当确定它只是达到浮点精度的零。

要计算傅立叶级数,您需要在等式中包含大符号 Σ:

y = zeros(size(t))
for k=1:2:21
   y = y + (4*A/pi)*1/k*sin(2*pi*f*t*k);
end

现在绘制此图时,您会看到方波的近似值。求和的上限越大,越逼近