当前注册人数155278人 邮箱: 密码: 注册新用户 忘记密码
首页 C/C++/MFC C# ASP.NET VB.NET MATLAB   站内搜索 BBS讨论社区 下载代码说明/积分规则
为什么要注册?

1. 可以直接免费从本站下载代码,防止邮件发送不到您的邮箱,或登录不了国外网站

2. 可以设定关键字,当有您关心的代码收录时,邮件通知您

3. 对这里的代码进行评分和评论

4. 可以和大家一起分享你的源代码,得到更多的建议

Extended DFT

扩展功能的数字傅立叶变换(DFT)源代码

2007年12月11日
MATLAB R10
程序之所以称之为扩展功能的DFT,是因为,它有如下扩展功能: 1. 可以自动扩展输入序列X,如果你输入的长度不足N,会自动以NaN补足。 2. 可以增大频率精度,至1/(N*T),其中T是采样周期。 3. 可以统计输入序列X的正弦波的幅度和相位 4. 输入序列可以包含NaN 5. 可以限制迭代的次数 6. 可以输入/计算二维矩阵
 
相关知识

      EDFT (Extended Discrete Fourier Transform) produce Discrete N-point Fourier Transform (DFT) for shorter then N sequence X. Unlike Fast Fourier Transform (FFT), where unknown readings outside of X are zero-padded, the proposed EDFT algorithm for calculation of DFT using only available data. Application of EDFT function is simple and similar to FFT, besides EDFT have the following additional features:
1. EDFT can extrapolate input sequence X to length N. That is, if apply EDFT for N>length(X), get the results:
F=edft(X,N)=edft(Y)=fft(Y); Y=ifft(F),
where Y is X plus non-zero forward and backward extrapolation of X to length N or/and interpolation if unknown data inside of X have been replaced by NaN (Not-a-Number).
2. EDFT can increase frequency resolution up to 1/(N*T), where T is sampling period. It is well known, that zero-padding do not increase frequency resolution of DFT, therefore the resolution of FFT algorithm is limited by length of sequence length(X)*T. Of course, there is no magic- FFT just have equal resolution on all N frequencies, while EDFT have ability to increase the resolution on some frequencies and decrease on others. The sum of resolutions along the frequency axis for both algorithms remain equal to N*length(X)*T.
3. EDFT can estimate amplitudes and phases of sinusoidal components in sequence X. Like as FFT output fft(X,N)/length(X) is proportional to amplitudes of sinusoids in X, also adding a second output argument for EDFT return the amplitude spectrum S of sequence X:
[F,S]=edft(X,N).
4. Input sequence of EDFT may contain NaN. The proposed algorithm can interpolate and reconstruct of missing readings or even data segments (gaps) inside of sequence X. You just need to replace unknown readings by NaN and run edft(X) or edft(X,N).
5. EDFT can run with limit to maximum number of iterations (input argument I) or either in non-iterative (I=1) mode
[F,S]=edft(X,N,I) or
[F,S,Stopit]=edft(X,N,I,W),
where W is weight vector and consisting of specific weights for each frequency in F. W is propotional to the amplitude spectrum of the signal. So, a`priori knowledge about form of the input sequence amplitude spectrum S can be used to setup appropriate weight vector W, otherwise default (equal) weight W=ones(size(F)) will be applied. Stopit is an informative (optional) output parameter. The first row of Stopit showing the number of performed iteration, the second row indicate breaking of iteration reason (see EDFT help).
6. Is it possible to estimate DFT of nonuniformly (irregularly) sampled input sequence by proposed algorithm? Yes, it is. As result, the Nonuniform EDFT (NEDFT) program introduced for processing of input sequence X sampled at arbitrary time moments tk. NEDFT call line: [F,S]=nedft(X,tk,fn) will perform DFT of sequence X(tk) and return outputs F(fn) and S(fn). If frequencies fn are on different grid then used by FFT and EDFT algorithms, a simple Inverse NEDFT (INEDFT) program should be applied to reconstruct Y(tn), call line: Y=inedft(F,fn,tn).
7. Two-dimensional EDFT of array X can be calculated by applying function edft2.m, call line F=edft2(X, mrows, ncols).
See programs edft.m, edft2.m nedft.m and inedft.m help for detailed info.
Launch also DEMO programs demoedft.m and demonedft.m to check proposed algorithm performance for the simulated test signal.
Read attached ExtendedDFT.pdf to get more comprehensive insight into suggested algorithm.

源代码原文下载:
Extended DFT Program EDFT produce high-resolution N-point DFT for N greater then length of data vector.

源码图片

从本站下载附件及源代码(1个附件,已经成功下载160次)

最值得关注的外文源代码

Free Source Code for ASK, OOK, FSK, BPSK, QPSK, 8PSK
Ideal Low Pass Filter
2D Target tracking using Kalman filter
How to apply the 2D FFT functions in Matlab
评论(评论是增加积分的一个有效途径)
字数在300字内
请如实评论
本源代码共评论23次,此处显示最近14次评论! 查看所有评论

kuntian01  2010年01月25日
谢谢!
wang  2009年12月28日
学习信号和matlab很有帮助
funszy  2009年12月13日
很好,对学习傅立叶变换很有帮助
li200301  2009年05月27日
good.thanks
congmang  2009年04月10日
很好哦!谢谢
strangename  2009年04月04日
不错
holysee  2009年03月30日
很好,对学习傅立叶变换很有帮助
chenbosunny  2009年03月25日
非常感谢!很好
bright  2009年03月19日
不错,注释很有帮助,谢谢斑竹!
一会  2009年03月16日
注释不错,但是如果能翻译过来就好了……
xuzhenhua  2008年12月22日
好啊
xiaoshi0430  2008年12月01日
挺有帮助的,不知道有没有最原始的fft
songjianhua  2008年09月30日
不错不错
雁南飞  2008年08月22日
就是不是C语言的,有些遗憾
字数在300字内
请如实评论
CopyRight (C) codesoso.com 2007-2009 All Rights Reserved   免责声明
京ICP备08011023号