【问题标题】:how to find fourier coefficients in matlab using approximate amount?如何使用近似量在matlab中找到傅立叶系数?
【发布时间】:2018-04-10 07:48:40
【问题描述】:

我有这个公式可以在 matlab 中找到傅立叶级数

f(n)= (f(t),exp(jnt))

而内积是:=(1\2*pi)integral((pi 和 -pi)(f1*f2'*dt))

现在我想在 matlab 中为这个向量找到傅立叶系数(f(t)=t) 其中 t 是一个长度为 1000 的向量。

当 k=2 时,我需要通过近似数量找到 2k+1 个傅立叶系数,即n=(-2,-1,0,1,2),然后将其与分析计算进行比较。

这是我到目前为止所做的:

clc

t = linspace(-pi,pi,1000);
f=t;
plot(t,f); hold all;


dt=2*pi/1000;
cnPlusVal=0;
cnMinusVal=0;
FourierS1=0;
FourierS2=0;
k=2;
for l = 1:k
    cnPlusVal=cnPlusVal+f.*exp(-i*l*t)*(dt/2*pi) ;
    cnMinusVal=cnMinusVal+f.*exp(i*l*t)*(dt/2*pi);

    FourierS1=FourierS1+cnPlusVal.*(exp(i*l*t));
    FourierS2=FourierS2+cnMinusVal.*(exp(i*-l*t));

end

现在为了将其与分析计算进行比较,我需要绘制 forier 系列 .. 对如何在 f 的同一图中执行此操作有任何帮助吗?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    这里有两个问题需要处理:

    • 与输出系列相比,您的第一个情节的规模完全不同;
    • 您无法使用系列的限制推断出好的轴范围,因为它们包含复数。

    这是我建议您的解决方法:

    figure();
    plot(t,FourierS1);
    x_lim = get(gca(),'XLim');
    y_lim = get(gca(),'YLim');
    hold on;
    plot(t,f);
    set(gca(),'XLim',x_lim,'YLim',y_lim);
    hold off;
    

    基本上:

    1. 您绘制傅里叶级数;
    2. 您保留绘图的当前 x 轴和 y 轴范围;
    3. 您正确使用hold 函数在当前绘图上绘制f;
    4. 您将绘图限制恢复到以前的范围。

    这是输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 2016-03-25
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多