【问题标题】:Synthesis of signal from Fourier transformation傅里叶变换的信号合成
【发布时间】:2015-03-30 00:40:38
【问题描述】:

我在 Matlab 工作。我具有图形功能。我应该:

  1. 在纸上将其扩展为傅里叶级数,
  2. 从我的系列中重构这个函数,
  3. 从答案序列重构函数(我有傅里叶级数的求解),
  4. 将我重建的函数与原始函数进行比较。
step = 0.05;
t = -5:step:10;
y1 = heaviside(abs(t)-6);
y2 = heaviside(-(abs(t)-2));
funct = 4*(y1+y2)+2;
plot(t,funct,'LineWidth',2),grid;
%coefficients of my Fourier series y
a = -4; b = 8; T = abs(a-b); L = T/2;
a0 = 8; 
a(1) = 2*sqrt(3)/pi;      b(1) = -2/pi;
a(2) = 6*sqrt(3)/pi;      b(2) = 3/pi;
a(3) = 0;                       b(3) = - 8/(3*pi);
a(4) = -2*sqrt(3)/pi;     b(4) = 3/(2*pi);
a(5) = -2*sqrt(3)/(5*pi);     b(5) = -2/(5*pi);
n = -5:step:10;
sum = 0;
for k = 1:5
    sum = sum + a(k)*cos(n*pi*k/L)+b(k)*sin(n*pi*k/L);       
end
y = a0/2 + sum;    %my series
%answer Fourier series y2
n = -5:step:10;
sum = 0;
for k = 1:5
    sum = sum + (power(-1,k-1)/(2*k-1))*cos((2*k-1)*pi*n/4);
end
y2 = 4+(8/pi)*sum;  %answer series
n = 1:length(t);
hold on
plot(n*step-5,y,'r-');

当我绘制 y(我的重建函数)时,我有以下图片:

但是当我绘制 y2(答案函数)时,我得到了很好的结果:

第一张图看起来我在重构信号时只使用了一个傅立叶分量。

为什么我的解决方案会得到如此糟糕的结果?

【问题讨论】:

    标签: matlab signal-processing


    【解决方案1】:

    更新:

    我无法摆脱我的第一个方法是错误的感觉,所以我进一步思考。你的程序和图片完全正确!

    不同之处在于,在第二个循环中,k=1 导致周期长度为 8,相位为 0(即余弦从 x=0 开始),这很好地匹配了底层的矩形函数。

    但在第一个循环中,k=1 的周期长度稍长(并且相位与 0 不同)。更长的周期长度以及添加每个余弦和正弦分量(不仅是第二个循环中的奇数) 导致一个近似值不太明显地拟合底层矩形函数(但实际上它在这个低数量的系数下做得尽可能好)。您需要使用大约 15 个而不是 5 个系数来获得与第二个循环类似的良好拟合。

    老错调试方法:

    我的第一个猜测是您的系数 ab 的值是错误的,因为正确的函数是偶数,因此所有正弦振幅都应该为零(为什么!)。 p>

    为了测试您的第一个估计循环是否正确,我从第二个循环中获取了系数

    k = 1:5;
    a = power(-1,k-1) ./ (2*k-1);
    b = zeros(1,5);
    

    并在第一个循环中使用它们而不是您的。结果还是错了。 因此,要找到第二个错误,您需要比较行

    sum = sum + a(k)*cos(n*pi*k/L)+b(k)*sin(n*pi*k/L);
    

    sum = sum + a(k)*cos((2*k-1)*pi*n/4);
    

    如果你想自己调试,那么现在就停止阅读,否则我的下一个提示是(2*k-1) 保证只有第 1、3、5、...余弦的幅度值不同于零(这是矩形波的必要性质)。

    【讨论】:

      【解决方案2】:

      @Hartmut Pfitzinger,感谢您的回答。我找到了另一种解决问题的方法:我考虑了 (-4, 8) 区间上的函数,它既不是奇数也不是偶数。但我意识到我可以考虑 (-2, 6) 区间上的函数,它会是偶数。所以我只是在区间 (-2,6) 上将信号扩展到傅立叶级数,仅找到 cos 的系数,并在第二个循环中进行增益近似。

      【讨论】:

      • 这也是一种可能的方法,实际上它是我的“旧的和错误的调试方法”的后续。这是“错误的”,因为它没有完全回答您的问题“为什么我的解决方案得到了如此糟糕的结果?”但我认为我的更新给出了答案。所以,如果你接受它,我会很高兴
      猜你喜欢
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多