声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2112|回复: 10

[FFT] 指数衰减函数的fft

[复制链接]
发表于 2017-3-15 20:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我写了一个程序,并将fft后的结果调整了一下,使他表示的是原始信号的幅值。
这个程序有问题吗?

  1. <p>clear
  2. N=2048;
  3. fs=2000;
  4. T=1/fs;
  5. n=0:N-1;
  6. f=fs/N*(0:N/2);
  7. x=1000000*exp(-200*t);
  8. X=fft(x);
  9. XX(1)=abs(X(1))/N;   XX(2:N/2+1)=2*abs(X(2:N/2+1))/N;
  10. plot(f,XX);
  11. </p>
复制代码
回复
分享到:

使用道具 举报

 楼主| 发表于 2017-3-15 20:32 | 显示全部楼层
中间少了一个语句,查到5和6行中间
  1. t=n*T;
复制代码


 楼主| 发表于 2017-3-15 20:37 | 显示全部楼层

                               
登录/注册后可看大图

这是图像,0频率点的幅值怎么比后面的小了。

发表于 2017-3-16 08:12 | 显示全部楼层
wxid_kpnygglfe5ou22_1489623322555_8.png
没什么问题吧
 楼主| 发表于 2017-3-16 19:23 | 显示全部楼层

最高点不应该在0频率地方吗?我的这个不是啊
发表于 2017-3-19 22:02 | 显示全部楼层
本帖最后由 hcharlie 于 2017-3-19 22:10 编辑

你错了!
我说的不是哪一条指令错了,而是概念错了。
你心里想的是做指数衰减函数的傅立叶变换,而实际做的是其有限长一段数据的FFT,由此后面的一切都错了。
指数衰减函数是无穷长的衰减到零的函数,但是你取其一段有限长的数据做FFT(或DFT),实际含义是做了以此段数据无限重复的周期函数的傅立叶分析,因此得到的零频,基频,2,3,4。。。阶频率,也是这个周期函数的概念,你的指数衰减函数不是一个振动信号,不存在所谓的零频,2,3,4阶的频率只有振动问题才有的概念,由于基本出发点有问题,所以结论都错了。
结论:你的指数衰减函数不能做FFT。
发表于 2017-3-20 08:48 | 显示全部楼层
  1. close all; %先关闭所有图片
  2. Adc=2; %直流分量幅度
  3. A1=3; %频率F1信号的幅度
  4. A2=1.5; %频率F2信号的幅度
  5. F1=50; %信号1频率(Hz)
  6. F2=75; %信号2频率(Hz)
  7. Fs=256; %采样频率(Hz)
  8. P1=-30; %信号1相位(度)
  9. P2=90; %信号相位(度)
  10. N=256; %采样点数
  11. t=[0:1/Fs:N/Fs]; %采样时刻
  12. %信号
  13. S=Adc+A1*cos(2*pi*F1*t+pi*P1/180)+A2*cos(2*pi*F2*t+pi*P2/180);
  14. %显示原始信号
  15. plot(S);
  16. title('原始信号');
  17. figure;
  18. Y = fft(S,N); %做FFT变换
  19. Ayy = (abs(Y)); %取模
  20. plot(Ayy(1:N)); %显示原始的FFT模值结果
  21. title('FFT 模值');
  22. figure;
  23. Ayy=Ayy/(N/2); %换算成实际的幅度
  24. Ayy(1)=Ayy(1)/2;
  25. F=([1:N]-1)*Fs/N; %换算成实际的频率值
  26. plot(F(1:N/2),Ayy(1:N/2)); %显示换算后的FFT模值结果
  27. title('幅度-频率曲线图');
  28. figure;
  29. Pyy=[1:N/2];
  30. for i="1:N/2"
  31. Pyy(i)=phase(Y(i)); %计算相位
  32. Pyy(i)=Pyy(i)*180/pi; %换算为角度
  33. end;
  34. plot(F(1:N/2),Pyy(1:N/2)); %显示相位图
  35. title('相位-频率曲线图');
复制代码


 楼主| 发表于 2017-3-22 16:24 | 显示全部楼层
hcharlie 发表于 2017-3-19 22:02
你错了!
我说的不是哪一条指令错了,而是概念错了。
你心里想的是做指数衰减函数的傅立叶变换,而实际做 ...

我取的那段已经衰减到零了也不能做吗?
发表于 2017-3-22 17:16 | 显示全部楼层
本帖最后由 hcharlie 于 2017-3-22 18:54 编辑
evilestspirit 发表于 2017-3-22 16:24
我取的那段已经衰减到零了也不能做吗?

你采集频率2000,采集2048点,大概1秒,你做FFT,结果是以你的2048点无限重复的周期函数的结果,周期函数的周期大概1 秒,最低频率大概是1 Hz,看起来象1 Hz的振动,而实际你的函数是单调衰减的,根本不存在接近1 Hz的振动,也不存在接着出来的2,3,4。。。Hz 的振动,这些振幅都是周期函数的频谱,不是你的单调函数的振幅,你的单调函数没有什么振幅!
就事论事。你说这种情况下零频应该是大还是小呢?我做了几个算例,随着衰减系数的大小的不同,零频相对一阶数量是可大可小的。



 楼主| 发表于 2017-3-23 17:40 | 显示全部楼层
谢谢你的回答!我的采集频率和采集点数应该取多少?

点评

rzbkjy  发表于 2017-3-24 18:03
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 17:10 , Processed in 0.117237 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表