声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2330|回复: 10

[FFT] [求助]zfft变换的纵坐标

[复制链接]
发表于 2007-11-21 15:46 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wdhd 于 2016-9-8 14:04 编辑

  我现在对一组数据进行zfft变换,但是细化后该频率出的信号幅值比从前小了,
  我找了好长时间没发现错在哪,我用了从songzy41的帖子里面下载的zfft和exzfft程序(地址:http://forum.vibunion.com/forum/thread-29289-1-1.html)

zfft.JPG
  这个是用zfft_m.m进行细化得到的结果,绿色的部分是想要的,但是幅值这么小
exzfft.JPG
  这个是用exzfft_m.m得到的
  我想得到的只是细化的结果,幅值应该是不变的啊,不知道错在哪了,高手们帮我改改,谢啦:lol
  附上要用的程序和数据。

zfft_test.m

1.14 KB, 下载次数: 30

zfft_m.m

1.15 KB, 下载次数: 25

exzfft_test.m

1.1 KB, 下载次数: 26

exzfft_m.m

840 Bytes, 下载次数: 24

回复
分享到:

使用道具 举报

 楼主| 发表于 2007-11-21 15:50 | 显示全部楼层
由于数据太大了,只好保留用的一部分,并且分成了两部分,扩展名要改成rar

aa1.txt

157.04 KB, 下载次数: 23

aa2.txt

87.59 KB, 下载次数: 19

发表于 2007-11-21 16:06 | 显示全部楼层
首先,ZFFT不能算是一种变换,只是一种算法。
没细看你的数据。
宋老师的程序我以前测试过,这个程序的目的是演示ZFFT算法流程,作为工程应用,这个程序还缺少环节。
细化是有条件的。
不是说随便选个细化倍数,随便选个采样频率和处理点数都能得到理想结果的。滤波器的过渡带以及窗函数影响非常大,足可以让你的细化结果面目全非。通常细化处理大多要经过谱校正,否则结果几乎毫无价值。
另外,有一个原因你也必须考虑:在没有细化的时候,分辨率不够,导致相邻谱峰迭加在一起,当然会看起来幅值比较大。当细化之后,谱峰分离,细微谱线“分担”了原来叠在一起的谱峰的能量,当然看起来幅值会变小。
提个小建议,你想验证细化的结果,可以这样办:
假设你原来用512个点得到一个原始频谱,在此基础上你想细化10倍,那么,做细化谱之前你不是至少要采5120个点么?用这5120个点直接作FFT。用5120点FFT与你的10倍ZFFT结果相比较,细化的效果如何不就一目了然了么?在这个基础上再寻找细化误差的原因,有的放矢!

[ 本帖最后由 bluefox 于 2007-11-21 17:01 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2007-11-22 08:53 | 显示全部楼层

回复 #3 bluefox 的帖子

谢谢,我试试
发表于 2007-11-22 09:34 | 显示全部楼层
我还是不明白楼主的意图。但我想先说明一下,ZFFT主要用于稳态过程,又用于2条谱线靠得很近,用FFT分辨不出,那时用ZFFT就能分辨出来,就如:http://forum.vibunion.com/forum/thread-29289-1-1.html上给的例子那样。
1,楼主的信号很明显是一个非稳态的过程,好象半个梯形,所以不知楼主想分析什么?[在8000点(左右)之前是一个上升过程,之后是一个指数衰减的过程(不知是什么信号)。]
2,如果用相对平稳的过程进行分析(取8000点之后),得到如同楼主笫1张图那样,并没有靠得很近的谱线,为什么要用ZFFT?
3,即使用了ZFFT,例如在ZFFT之前取4096个点,要做ZFFT时取了40960个点(设取np=10),因为信号在8000点之后的信号是指数衰减的,在做ZFFT中经滤波、下采样后得4096点,但能量已比ZFFT之前的4096个点的能量要小,计算出的幅值当然也小了。
此外楼主给的exzfft_test和zfft_test好象都不全,笫1句便是subplot(211)??
 楼主| 发表于 2007-11-22 10:43 | 显示全部楼层

回复 #5 songzy41 的帖子

1、我这个是稳态的过程,是电机系统的速度信号,因为附件不能大于200k,所以只上传了用到的一部分,包括速度的上升,和到达2000转之后稳定运行的过程,看上去是像梯形,电机运行在2000转时,说是稳定运行的,但是还是在一定范围内有波动的,所以在8000点那里表现出先上升在衰减的过程,是指数衰减吗,我不知道。
2、我想用fft分析速度信号频率成分,然后陷波滤波,所以我需要精确的知道干扰频率最大一点的频率值,所以我设想先用fft大致的分析一下,然后找出干扰频率最大的信号所在的范围,用zoomfft,得到精确的频率值,现在也只是在设想,不知道这种想法可行不?
3、因为这个信号只是一个波动的过程,不是衰减,所以应该可以用zfft吧。  

ps:这里面的信号是从smulink里面保存的,在这直接用了,所以在程序中直接就画了图
 楼主| 发表于 2007-11-22 11:24 | 显示全部楼层
根据bulefox的建议试了一下, 结果如图,
1.JPG
但是我发现一个问题,因为在我的test程序里面只引用了256个数据,所以再用zfft_m.m计算时,如果采用频率放大N杯,那么下采样之后的数据就变成原来数据长度的1/N了,所以在上图的第二部分中绿色曲线和蓝色并没有完全重合。

根据大家所说的,如果zfft之前的数据是256,那么zfft时数据的长度是256*放大倍数,所以我把程序改成下面这个样子:
x=aa(15001:156.25:55000);    %数据长度256
fs=3200;   %采样频率
N=256;     
y1=fft(x,N);
n=0:N/2-1;
df=fs/N;
f=n*df;
y=abs(y1)/N*2;
y(1)=y(1)/2;
subplot(211)
plot(f,y(1:N/2));
title('fft()函数的响应 fs=3200');
xlabel('frequence/Hz')
ylabel('幅值')
grid on
axis([0,1600, 0,1])
hold on
%% zfft部分  小范围的细化
[a,b]=max(y(2:N/2));
fz=f(b+1);  %细化的中心频率
np=8;     % 放大倍数 细化倍数越大,幅值衰减越大
nfft=N;     % FFT长度
fmin=fz-0.25* fs/np;% 最小细化截止频率
fmax=fmin+0.5*fs/np;   % B=fs/np
                   % 最大细化截止频率  %保证中心频率在fz
% 计算zfft
x=aa(15001:156.25:335000);  % 重新选取一段数据  数据长度是 256*8
x=x';  
[a,o,r,g]=zfft_m(x,fmin,fs,nfft,np);
y2=zeros(1, nfft/2);
y2(1: nfft/4) =a(nfft-nfft/4+1 : nfft);
y2(nfft/4+1 : nfft/2) =a(1: nfft/4);
n=0: (nfft/2-1);%只取一半的fft结果,
% 定义细化后的频率向量  横坐标
f2=fmin+n*2*(fmax-fmin)/nfft;%从fmin起到fmax结束取了nfft/2个点,采样间隔是2点
                          %zfft的运算结果只是一段,而不是显示全部频率信号
                          %这一段是从fmin起到fmax结束的nfft个点
plot(f2, abs(y2),'g');
%% fft N*8 个数据
x=aa(15001:156.25:335000); %要进行变换的信号
fs=3200;   %采样频率
N=N*np;     
y1=fft(x,N);   %x的长度是2048,N=2048
n=0:N/2-1;
df=fs/N;
f=n*df;
y=abs(y1)/length(x)*2;
y(1)=y(1)/2;
subplot(212)
plot(f,y(1:N/2));
title('fft()函数的响应 fs=3200');
xlabel('frequence/Hz')
ylabel('幅值')
grid on
axis([0,1600, 0,0.5])
hold on
plot(f2, abs(y2),'g');

如红字部分,重新给x赋一个长度为2048的数据,然后进行zfft,这个对我来说是必须的。
上面一段程序的结果如图:
2.JPG
这个说明了什么,说明zfft的结果是对的,是吗,
但是,为什么上半部分的图里面475Hz处的频率会有那种情况呢?
 楼主| 发表于 2007-11-22 11:34 | 显示全部楼层
另外我在800Hz处也用了zfft算法
结果如图:
3.JPG
800Hz处也减小了,但是比400多那个好很多,这是为什么?

[ 本帖最后由 witty01 于 2007-11-22 12:06 编辑 ]

a.part01.txt

160 KB, 下载次数: 12

分析的数据,比从前多了一些

a.part02.txt

160 KB, 下载次数: 11

a.part03.txt

160 KB, 下载次数: 8

a.part04.txt

160 KB, 下载次数: 8

a.part05.txt

141.99 KB, 下载次数: 8

发表于 2007-11-22 17:05 | 显示全部楼层
原帖由 witty01 于 2007-11-22 11:24 发表
这个说明了什么,说明zfft的结果是对的,是吗,
但是,为什么上半部分的图里面475Hz处的频率会有那种情况呢?

上半部的图中ZFFT不能相符很好,而在下半部图中能相符合,说明原256个样点在475Hz有较大的平均能量,而在2048个样点时475Hz的平均能量就较小。我做了一个计算,把2048个样点在375-575Hz之间带通滤波,其结果在下图,红色是2048点的x信号,黑色是滤波后的信号。上半图是取前256个样点,很明显可看到平均能量比较大。
原帖由 witty01
2007-11-22 11:34 发表

800Hz
处也减小了,但是比400多那个好很多,这是为什么?

在800Hz处比较接近,这只说明800Hz随时间能量没有这么大的变化。
(传错了一张图,在编辑中没看到可删除图的,请版主把awt2d.jpg删除,谢谢)

[ 本帖最后由 yangzj 于 2007-11-22 17:25 编辑 ]
awt21a.jpg
发表于 2007-11-22 20:02 | 显示全部楼层
对800Hz附近的信号也进行了滤波(取700-900Hz),得下图,可看到能量分布相对均匀一点。
awt22a.jpg

评分

1

查看全部评分

 楼主| 发表于 2007-11-23 10:34 | 显示全部楼层
非常感谢宋老师,麻烦您了:lol

这部分的知识我学要恶补一下了,有什么书可以推荐一下吗

另外,想问一下 这两个频率 475Hz 和800Hz哪一个可能会引起系统的机械共振呢?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-7 08:42 , Processed in 0.076518 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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