傅里叶变换合成信号

时间:2015-03-28 04:11:12

标签: matlab signal-processing

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

  1. 将其扩展为纸上的傅里叶系列,
  2. 从我的系列
  3. 重建此功能
  4. 从答案系列重构函数(我解决了傅里叶级数),
  5. 将我的重建功能与原始功能进行比较。
  6. 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(我的重建函数)时,我有以下图片: enter image description here

    但是当我绘制y2(答案功能)时,我有很好的结果: https://yadi.sk/i/03ysYoNKfaABe

    第一个图形看起来在重建信号时只使用一个傅立叶分量。

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

2 个答案:

答案 0 :(得分:1)

<强>更新

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

不同之处在于,在第二个循环中k=1导致周期长度为8且相位为0(即余弦从x=0开始),这与下面的矩形函数非常匹配。

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

旧有错误的调试方法:

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

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

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 ......余弦的振幅值不等于零(其中是矩形波的必要属性。)

答案 1 :(得分:1)

@Hartmut Pfitzinger,谢谢你的回答。我找到另一种方法来解决我的问题:我考虑了(-4,8)间隔的功能,这并不奇怪,甚至没有。但我意识到我可以考虑(-2,6)间隔的功能,它会是均匀的。所以我只是在间隔(-2,6)上将信号扩展到傅里叶级数,找到仅用于cos的系数,并在第二次循环时获得近似值。