miao7mijao 发表于 2006-9-20 10:59

w89986581:
你好!我想问你个问题,就是关于你写的 那个程序,如果 我把第一行 function zfft(x,fs,fi,fa,nfft);
去掉的话,还可以执行你 那个程序么?如果不可以的话,为什么呢 ?

miao7mijao 发表于 2006-9-20 14:27

我想问一下:第一次的采样点数nf与第2次的采样点数nfft有关系么?
我突然发现自己越看越糊涂!

yangzj 发表于 2006-9-20 16:32

原帖由 songzy41 于 2006-8-31 16:44 发表
也试着把《MATLAB在振动信号处理中的应用》中的ZFFT改为函数,方便其它坛友的调用,并提供调试程序和数据。下图是调试程序给出的计算结果。
函数为:
function y=zfft_m(x,fi,fs,nfft,np)
% x 被测信号
% fi...

这个程序的采用这样的滤波有问题哦,使整个程序都没有意义了.
既然都已经做了 nf点的FFT了,那直接用这个结果的频率分辨率已经很低了,也就没必要后面的细化了.

songzy41 发表于 2006-9-21 09:27

原帖由 yangzj 于 2006-9-20 16:32 发表


这个程序的采用这样的滤波有问题哦,使整个程序都没有意义了.
既然都已经做了 nf点的FFT了,那直接用这个结果的频率分辨率已经很低了,也就没必要后面的细化了.
我同意yangzj的看法,这个程序不能算作一个好程序。但它的原型出自于王济的“MATLAB在振动信号处理中的应用”。我虽早就把它修改成一个单独的函数,一直没敢供大家共享。但因w89986581给出了这程序,又不十分好使,我才显丑拿出来共享。

[ 本帖最后由 songzy41 于 2006-9-21 09:28 编辑 ]

yangzj 发表于 2006-9-21 09:39

关于ZFFT,就我所看的,还是丁康老师文章里的算法最好.

xiaokang 发表于 2009-11-6 04:28

回复 8楼 songzy41 的帖子

请问,细化之后,前面的那几点没有值,怎么处理呢?

Robotech 发表于 2009-11-6 15:10

回复 20楼 yangzj 的帖子

我认为其实所谓ZoomFFT根本没有实现“细化”


以下是我这篇帖子的内容,请批评指正:
原帖:
http://forum.vibunion.com/forum/viewthread.php?tid=78123&highlight=%CF%B8%BB%AF








1. 首先说频率分辨率的概念

这里,分辨率默认指频率分辨率;并且,我们默认指的信号客观的物理可达到的分辨率,即物理分辨率;并非“计算分辨率”

      假设信号的采样时间Delta_T定了,信号在频域上的理论最高分辨率也就已经确定了,等于Delta_f=1/Delta_T;至于为什么,请阅读 胡广书 的教材第三章 3.7节。

   如果你把信号补一倍长度的0,可以计算出一个分辨率 为0.5*Delta_f的频谱,但这对信号分析没有增加新的物理信息,其实仅仅是数学游戏;增加的是“计算分辨率”,没有增加任何“物理分辨率”。

2. 再说什么是细化

   所谓细化,我认为定义应该是:(不增加信号时域长度的情况下),提高其频谱分析物理分辨率的操作。

ZoomFFT,实现时,如果细化为原来的D倍,变为Delta_f/D;则要求采样长度相应的也应该是原来的D倍,D*N;而既然如此,直接经FFT得到的频谱,其实分辨率本身就是Delta_f/D。 ZoomFFT所做的, 只不过直接FFT计算点数是D*N,ZoomFFT通过巧妙的办法,使计算量仍旧是N;并且,只选取我们所关心的“频带”去计算。   对我们而言,我们也可以直接FFT得到频谱后,只绘制我们关心的那个“频带”;相对该直接FFT方法,在获得信息上ZoomFFT没有任何增加;仅仅提高了效率(连这其实都值得商榷,如果我们同时有关心其他频率,ZoomFFT还得重算)。

所以,我认为ZoomFFT的更确切的称呼,应该是“选带分析”,而非“细化分析”;当然这是沿用我理解的前面的细化的定义。

ZoomFFT这一“手段”,在高性能个人数字计算机普及之前的分析仪器时代,对性能的提高意义是十分巨大的,因为那时,哪怕做一组512点的FFT,耗时都是很可观的;但现在,意义已经不再如过去那么显著;毕竟,在PC机上,计算哪怕是较长的FFT已经都是ms-秒级的时间。

当然,目前来说ZoomFFT这一“手段”,对于存储量、计算能力相对弱的便携计算机/仪器而言,还是有意义的。

3. 到底该怎么实现“细化”?

我理解,除非对原始信号进行外推或者就是认为采时间上更长的信号,再经FFT得到频谱,否则无法实现真正的“细化”。
现代功率谱分析方法,隐含了对信号的外推,可以突破前述Delta_f=1/Delta_T的限制。

4. 那CZT实现细化是怎么回事?

仔细阅读信号处理的基本知识可以发现,将CZT用于细化仅仅是对频域进行插值;这与时域补零一样(实际可以证明时域补零跟频域插值是等效的),增加的还是“计算分辨率”。当然,这个方法,一些情况下可以有助于看到两个相近谱峰的“概貌”,也并非毫无意义。

[ 本帖最后由 Robotech 于 2009-3-17 15:57 编辑 ]
附件
关于分辨率.JPG (101.13 KB)
2009-3-17 15:54

xiaokang 发表于 2009-11-7 15:02

谢谢楼上回答,看了你的帖子!受益!更想知道,怎么才能求得更准的多个局部峰值对应频率,在数据点数一定的条件下?

robustcococole 发表于 2009-12-15 19:57

受教了。。。

suqiao 发表于 2010-9-29 15:23

回复 songzy41 的帖子

你的程序我运行了为什么会出错呢,错误原因如下:
Error in ==> Untitled4 at 8
x=y(2,:);

200810100659 发表于 2010-12-6 18:46

{:{39}:}不错的思路。

hivdg 发表于 2011-1-16 15:24

songzy41 发表于 2006-9-21 09:27 static/image/common/back.gif
我同意yangzj的看法,这个程序不能算作一个好程序。但它的原型出自于王济的“MATLAB在振动信号处理中的应 ...

花了1个小时看完并且熟练运用你给的程序,结果说不好使,晕过去了

suqiao 发表于 2011-3-4 16:10

回复 13 # songzy41 的帖子

你的截止频率是不是有问题,那个事最大的截止频率,也就是说,你细化的范围是从最小细化频率到fs/2。这样子是不是不太对?

comoma2011 发表于 2011-6-7 22:05

强悍,高人云集啊。学习ing{:{39}:}
页: 1 [2]
查看完整版本: 满足怎么样的条件,才能使得czt实现频率细化呢?