首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的傅里叶级数不能正确工作?

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

Stack Overflow用户
提问于 2018-04-23 23:34:11
回答 1查看 201关注 0票数 1

为什么我的傅里叶不能正常工作?我在哪里弄错了?我写的时间域是否正确?我使用的信号方程是:

代码语言:javascript
运行
复制
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的结果:

十长对吗?

为什么我没有方波?

另一个问题是,我使用这个Fourier级数进行向上/向下采样,而不改变时域视图?

以下是我的重采样代码:

代码语言:javascript
运行
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-24 15:04:38

Y= (4*A/pi)*1/k*sin(2*pi*f*t*k);方波信号的%Fourier级数

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

要计算傅里叶级数,需要在方程中包含大的Σ符号:

代码语言:javascript
运行
复制
y = zeros(size(t))
for k=1:2:21
   y = y + (4*A/pi)*1/k*sin(2*pi*f*t*k);
end

现在,当你绘制这个图的时候,你会看到方波波形的近似。求和上限越大,近似越好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49991335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档