声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4281|回复: 17

[FFT] 我想对两组数据同时做FFT,实现他的matlab程序怎么写呀

[复制链接]
发表于 2011-7-25 11:31 | 显示全部楼层 |阅读模式

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

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

x
我用两个相互垂直的涡流传感器测得转子前支撑的两组数据,现在想把这两组数据同时做FFT,请问能实现这种结果的matlab程序,谢谢

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2011-7-25 13:19 | 显示全部楼层
为什么要同时做啊?分开做不好吗?
 楼主| 发表于 2011-7-25 15:33 | 显示全部楼层
回复 2 # dsp2008 的帖子

因为这两个数据作为一个整体来考虑的,可以跟你说的详细一点,我研究的是转子动平衡方面,要通过FFT找出转子不平衡的幅值大小和相位的,希望你能给点意见
发表于 2011-7-25 19:01 | 显示全部楼层
这与分不分开算没一点关系。
 楼主| 发表于 2011-7-25 22:22 | 显示全部楼层
回复 4 # dsp2008 的帖子

我不是很明白,请高手指点一下,我现在要做关于转子动平衡的检测,就是根据传感器测得的数据,怎么能找出他的不平衡的幅值大小和相位,急切需要您的解答
发表于 2011-7-26 21:02 | 显示全部楼层
我只懂信号处理,不懂你的专业。所以,不好对你的问题做出回答。
发表于 2011-7-26 21:05 | 显示全部楼层
不过,我可以瞎猜一下:

你的两路信号在同一时间、按同一采样时钟采集进来,这样就可以通过分别求取它们的傅立叶谱的方法,看一看同一个频率点上,这两路信号的谱峰大小和相位差情况。
若是这样,可以分别计算它们的FFT。没有必要同时计算!

点评

赞成: 5.0
赞成: 5
  发表于 2011-7-27 20:08
 楼主| 发表于 2011-7-27 09:51 | 显示全部楼层
回复 7 # dsp2008 的帖子

你说的也许有道理,我会试试,我用了总共4个涡流传感器测得转子的信号,前支撑2个,后支撑2个,而每2个分别是侧水平和测垂直方向的。
 楼主| 发表于 2011-7-27 10:10 | 显示全部楼层
回复 8 # 期待着一天 的帖子

现在又遇到一个新问题,我假设了两个信号,一个假如是垂直信号x1=3*sin(2*pi*15*t+pi/2);另一个是水平信号x2=3*sin(2*pi*15*t);我分别对他们FFT,利用deg=angle(x1);deg2=angle(x2);我观察他们在15HZ处的相位并不等于原信号中的初相位。你说这是为什么呀?难道angle不是求原信号的相位的吗?
发表于 2011-7-28 21:30 | 显示全部楼层
楼上的妹娃子,你把谱分量的相位误解为瞬时相位了。
 楼主| 发表于 2011-7-28 21:56 | 显示全部楼层
回复 10 # dsp2008 的帖子

请高手指点一下,什么是谱分量的相位?什么是瞬时相位?感谢
发表于 2011-7-30 16:32 | 显示全部楼层
把两列数据x1和x2组合在一起:x=i*x1+x2,构成一列数据做FFT,这种情况在实时处理中会有,主要是为了节约运算的时间。FFT后经适当处理可以求出x1和x2的FFT值X1和X2。
发表于 2011-7-30 16:37 | 显示全部楼层

FFT后用angle函数求出的是信号的初始相位,但
1,要求的频率,例如15正好对应于FFT后的某一条谱线:
2,用angle求出的相角是对应于余弦信号的,与正弦信号差pi/2。
所以考虑了这两点后就能求出初始相角,如果要求的频率不与FFT后的某一条谱线相重合,则只能用校正法进行校正了。
 楼主| 发表于 2011-7-30 19:49 | 显示全部楼层
回复 13 # songzy41 的帖子

你好,谢谢老师的讲解和解答。我思路上有点清晰了,fft如果满足一定的条件,就能在变化后的某个谱线上显示信号的幅值和相位,如果不满足就不能显示出来,要想得到正确的数值必须通过校正,说到这里,我想请老师能不能给我举个例子示范一下呢,因为我现在就是要做这种复数的FFT,关键是变化后不能得到,我现在很困惑,不知道如何得到数据,希望得到老师您的帮助。
function pinlv()
clf
fs=100;
N=128;
n=0:N;
t=n/fs;                  
x1=3*sin(2*pi*25*t+pi/6);
x2=3*sin(2*pi*25*t+pi/2+pi/6);
y1=6*sin(2*pi*25*t-pi);
y2=6*sin(2*pi*25*t+pi/2-pi);

x=i*x1+x2;
y=i*y1+y2;
r1=fft(x,N);
r2=fft(y,N);

mag1=abs(r1);
mag2=abs(r2);
deg1=angle(r1);
deg2=angle(r2);
f1=(0:length(r1)-1)'*fs/length(r1);
f2=(0:length(r2)-1)'*fs/length(r2);

subplot(2,2,1),plot(f1,mag1*2/N);grid
subplot(2,2,2),plot(f2,mag2*2/N);grid
subplot(2,2,3),plot(f1,deg1);grid
subplot(2,2,4),plot(f2,deg2),grid
我是分别吧相差90度的两个信号构成了一个复数,然后对这个两个复数进行FFT,看他们的FFT之后的幅频图和相频图满足不满足给定的初始信号的相位角以及他们的相位差?通过这个例子我最终想把我用传感器在前后支撑测得的水平和垂直的数据也这样构成复数并且进行FFT,看看前后支撑相位相差多少度,以判断转子是属于那种不平衡,恳请老师帮忙分析一下程序,并将这个程序校正一下,我当做程序的模板来学习,谢谢老师了,麻烦老师要给我改改哦。
发表于 2011-7-31 11:35 | 显示全部楼层
期待着一天 发表于 2011-7-30 19:49
回复 13 # songzy41 的帖子

你好,谢谢老师的讲解和解答。我思路上有点清晰了,fft如果满足一定的条件,就 ...

按如下组合成x和y,对应的FFT值为r1和r2。            
x1=3*sin(2*pi*25*t+pi/6);
x2=3*sin(2*pi*25*t+pi/2+pi/6);
y1=6*sin(2*pi*25*t-pi);
y2=6*sin(2*pi*25*t+pi/2-pi);
x=i*x1+x2;
y=i*y1+y2;
r1=fft(x,N);
r2=fft(y,N);
若x1、x2、y1、y2对应的FFT值是X1、X2、Y1、Y2,则应从r1和r2中求出X1、X2、Y1、Y2,然后从这几个量中求出x1、x2、y1、y2在25Hz处的初始相角。我不知LZ的
deg1=angle(r1);
deg2=angle(r2);
代表什么意义,能代表X1、X2、Y1、Y2的相角吗?


您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 12:34 , Processed in 0.078914 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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