傅里叶变换——Matlab实现

傅里叶变换

通过傅里叶变换,可以将混合信号解析成叠加的不同频率信号的振幅

代码见博客最后方


算法实现

  • 请编写 1024 点快速傅里叶变换的算法。自行生成一段混杂若干不同频率正弦的信号,测试所编写的快速傅里叶变换算法。

设计思路

  • 首先生成一个由多个不同频率的正弦函数叠加的信号,这里我的频率都是小于1/2pi的,因此其中必有周期2pi
  • 再在2pi周期里面等分取1024个点的值
  • 利用傅里叶变换后输出,观察每种频率信号对应的振幅

数值实验

  • 不同频率的振幅如下
    傅里叶变换——Matlab实现_第1张图片

结果分析

  • 由于一开始生成的信号,其实是sin(x)跟sin(5x)叠加的信号,因此最后变换后得到的结果符合原结果

代码实现

clear;
format long;
A1 = [100,50];
A2 = [1,5];
N = 1024;
k = 5;

for n = 1:N
    x = (2*pi/N)*(n);
    y(n) = 10*sin(x) + 30*sin(5*x);
end

w = exp(1i*2*pi/N);
for m = 0:k
    c(m+1) = 0.0;

    for j = 0:N-1
        c(m+1) = c(m+1) + y(j+1)*(w^(m*j));
    end
    %c(m) = c(m)/N;
    result(m+1) = m;
end

%plot(result, c);
bar(result,c);



你可能感兴趣的:(Numerical,calculation,Matlab,Numerical,Calculation)