傅⾥叶变换——Matlab实现
傅⾥叶变换
通过傅⾥叶变换,可以将混合信号解析成叠加的不同频率信号的振幅
代码见博客最后⽅
算法实现
请编写 1024 点快速傅⾥叶变换的算法。⾃⾏⽣成⼀段混杂若⼲不同频率正弦的信号,测试所编写的快速傅⾥叶变换算法。设计思路
⾸先⽣成⼀个由多个不同频率的正弦函数叠加的信号,这⾥我的频率都是⼩于1/2pi的,因此其中必有周期2pi
再在2pi周期⾥⾯等分取1024个点的值
利⽤傅⾥叶变换后输出,观察每种频率信号对应的振幅
数值实验
不同频率的振幅如下
结果分析
由于⼀开始⽣成的信号,其实是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
matlab求傅里叶变换
%c(m) = c(m)/N;
result(m+1) = m;
end
%plot(result, c);
bar(result,c);