关于Matlab中傅里叶级数的困惑

时间:2012-03-09 19:59:35

标签: matlab signal-processing signals

我目前正在学习DSP,我正在使用Matlab软件包来解决问题。我目前刚刚开始尝试了解傅里叶系列,并遇到以下问题。

  

使用傅立叶级数生成100hz三角波。

现在,我无法理解使用傅立叶级数的这部分问题。

我使用以下matlab代码生成了一个100hz的三角波:

t = 0:1/10000:1;
f=100;
x1 = sawtooth(2*pi*f*t, 0.5);
x2 = fft(x1);
plot(t,x1); 
axis([0 0.10 -1 1]); 
grid on;

现在我在matlab中使用什么代码来绘制这个三角波的傅里叶级数?

感谢任何可能对此特定问题有所贡献的人。

1 个答案:

答案 0 :(得分:4)

我认为问题是要求你找出'a'和'b'系数,然后通过在适当的频率上求和正弦和余弦来产生锯齿波。在线找到锯齿波的傅里叶系数并不太难,但我鼓励你把它解决并用它来检查你的答案:)

然后做这样的事情

n_harmonics = 10;
n = zeros(1, n_harmonics);
a = ?;  % for you to figure out - probably a function of n
b = ?;  % same idea

t = linspace(0, 2*pi);
x = zeros(size(t));
for nx = 1 : n,
    x = x + a(nx)*cos(nx*t) + b(nx)*sin(nx*t);
end
plot(t, x)

注意傅立叶级数与傅里叶变换不同,后者是fft估计的。大多数关于信号处理的文本将从傅里叶级数开始,并以此为基础进行傅立叶变换。还要注意,当从连续时间移动到离散时间时,存在大量重要且微妙的差异。同样,大多数教科书可能会以连续时间开始,然后将其作为介绍离散时间概念的基础。