声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3581|回复: 16

[编程技巧] 怎样将FFT的实部和虚部分离开???

[复制链接]
发表于 2016-5-24 11:24 | 显示全部楼层 |阅读模式

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

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

x
求大神解答怎样将FFT的实部和虚部分离开?

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2016-5-24 11:35 | 显示全部楼层
real和imag是这个意思吗?

点评

不是的,你这样的话确实可以实现实部和虚部分开,但是不精确而且我后续要进行相位校正,这样就得不到理想的值了!!!我现在用共轭解决的!!!如果你知道怎么进行相位校正还请指点一下。  发表于 2016-5-24 15:12
发表于 2016-5-24 13:11 | 显示全部楼层
  1. fs=12;
  2. N=2500;
  3. n=0:N-1;
  4. t1=0:1/fs:1;
  5. x1=t1;
  6. t2=1:1/fs:2;
  7. x2=2-t2;
  8. x=[x1,x2];
  9. t=[t1,t2];
  10. figure(1);
  11. plot(t,x);
  12. xlabel('t');
  13. ylabel('f(t)');
  14. title('f(t)= t(0≤t≤1);2-t(1≤t≤2) time domain waveform');
  15. grid;
  16. y=fft(x,N);
  17. y1=fftshift(y);
  18. mag=abs(y);
  19. mag1=abs(y1);
  20. f=n*fs/N;
  21. f1=n*fs/N-fs/2;
  22. figure(2);
  23. plot(f1,mag1);
  24. xlabel('Frequency');
  25. ylabel('Amplitude');
  26. title('f(t)= t(0≤t≤1);2-t(1≤t≤2) ferquency domain waveform ');
  27. grid;
  28. a=real(y1);
  29. b=imag(y1);
  30. figure(3);
  31. plot(f1,a);
  32. title('Real');
  33. grid;
  34. figure(4);
  35. plot(f1,b);
  36. title('Imaginary');
  37. grid;
  38. y2=hilbert(a);
  39. figure(5);
  40. plot(f1,y2);
复制代码
这是我找的别人的程序,你看是不是这个意思

点评

方便分享一下吗  详情 回复 发表于 2016-5-25 13:22
你这个也是直接用imag来求得,不怎么准确,而且如狗这样求了之后我接下来的相位校正就没法做了,我是直接用共轭解决的,现在已经可以用了,谢谢!!!  发表于 2016-5-24 15:21
发表于 2016-5-24 13:37 | 显示全部楼层
平均模式有3种:对FFT计算出的复数直接平均(向量)、对FFT计算出来的复数幅值的均方值进行平均和对每一根谱线单独进行平均(Peak Hold),从而保持每一次FFT计算的峰值点不变。平均权重指对不同的平均数据段配以不同的权重,有两种方式:各数据段一视同仁的线性方式和事件越近的数据段权重越大的指数方式。平均次数指将输入信号分成多少段进行平均。平均的输出类型主要指每一次计算结果都输出还是所有的平均计算都完成后再输出,因为在有的测试分析应用中,测试工作人员还希望能够观察到每一次频谱分析的结果,从而监测信号的频域特性随时间的变化或存在的某些突变或异常。
 楼主| 发表于 2016-5-24 15:17 | 显示全部楼层
sovereign 发表于 2016-5-24 13:37
平均模式有3种:对FFT计算出的复数直接平均(向量)、对FFT计算出来的复数幅值的均方值进行平均和对每一根 ...

说得简单一点?看的不大明白。。。
发表于 2016-5-25 13:22 | 显示全部楼层
Edinburgh 发表于 2016-5-24 13:11
这是我找的别人的程序,你看是不是这个意思

方便分享一下吗

点评

。。。感谢  详情 回复 发表于 2016-5-25 15:50
O=conj(OP); OO=O+OP; Rk=(1/2)*OO; OOOO=OP-O; Ik=(1/2)*OOOO; 这个就是共轭!!!  发表于 2016-5-25 15:02
 楼主| 发表于 2016-5-25 15:04 | 显示全部楼层
NASA 发表于 2016-5-24 11:35
real和imag是这个意思吗?

我用共轭解决的。但是求出实部和虚部之后不知道怎样去求相位?求指点。。。
发表于 2016-5-25 15:50 | 显示全部楼层

。。。感谢
发表于 2016-5-26 10:44 | 显示全部楼层
楼主问题解决了  分享一下经验啊
 楼主| 发表于 2016-5-26 11:48 | 显示全部楼层
vibmaster 发表于 2016-5-26 10:44
楼主问题解决了  分享一下经验啊

应用共轭命令之后通过加减将实部或者虚部除掉。就可以得到准确的值了。

点评

谢谢分享经验  详情 回复 发表于 2016-5-30 08:28

评分

1

查看全部评分

发表于 2016-5-30 08:28 | 显示全部楼层
ZH----过客 发表于 2016-5-26 11:48
应用共轭命令之后通过加减将实部或者虚部除掉。就可以得到准确的值了。

谢谢分享经验
发表于 2016-9-23 19:22 | 显示全部楼层
实部:a=real(fft(x));
虚部:b=imag(fft(x));

点评

楼主都说了 这样的效果不好  详情 回复 发表于 2016-9-26 09:17
发表于 2016-9-26 09:17 | 显示全部楼层
yi_lu1025 发表于 2016-9-23 19:22
实部:a=real(fft(x));
虚部:b=imag(fft(x));

楼主都说了  这样的效果不好
发表于 2016-10-26 13:04 | 显示全部楼层
学习了。。。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-10 15:37 , Processed in 0.072975 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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