范文一:国学经典之生之来谓之精
学讯网 www.xuexun.com 最有实力的在线学习平台
生之来谓之精
《黄帝内经)对人类的起源也从医学角度进行了讨论,如CA枢?天年》所说:‘人之始生??以母为基,以父为根。”意思是说.人的生命来源于父母之精的结合,并且债帝内经》中关于各个器官的生成也做了进一步的论述。《灵枢?经脉》说:“人始生,先成精.精成而脑髓生,骨为干,脉为营,筋为刚.肉为墙,皮肤坚而毛发长。”这就明确指出构成人体的各种器官.如脑髓、骨、脉、筋、肉、皮肤、毛发等都是由父母的生殡之梢化育而成。
在上面我们提到“天地气交,万物华实”,结合“生之来谓之精”这一观点,我们就可以得出这样的观点:人类的萦衍和生存,不仅需要天地阴阳之气运动变化而形成的自然条件.还需要构成人体的直接材料—先天之精。先天之精由父毋之精合和,具有产生新生命的本能活力。
综上所述.《黄帝内经公对生命起源的认识,建立在辩证唯物观的基础之上.为中医学正确地阐释生命现象及生命规律奠定了理论基础,对生命起源的认识提供了客观的依据。学讯网女人养生之道 http://www.xuexun.com/AL_128.shtml 整理
范文二:什么形态的奇石才能谓之“禅石”? 精
依据禅宗教义,禅是说不得的。禅既然说不得,那么禅石又如何理解、什么形态的奇石才能谓之“禅石”呢?带着这些问题,本刊记者王维芳连线秦文联先生。
主持人:王维芳
采访对象:秦文联
禅石的定义
主持人:请问秦老师什么是禅石?
秦文联:我先讲一个关于禅的起源故事吧,据传佛祖在灵山会上登座,一言不发,粘起一朵莲花向僧众展示,百万僧众,无人能解,唯有大迦叶尊者微微一笑,佛祖当下就说:“我有正法眼藏,温馨妙心,实相无相,微妙法门,会属摩诃迦叶”,自此有了禅宗。由此来看,禅是心心相印的产物,全在那会心一笑之中。 据此理解,禅石就是能体悟禅的精神和思想的石头,然而佛家又说“万物皆有佛性”, 岂不是所有的石头都有佛性,都要算禅石了?果真都算禅石,赏石文化里就不会有禅石之说了。
只有我们的佛心禅意足够强大,才能感知到每一块石头的佛性,才能达到每一块石头都是禅石的高境界。由于我们自己佛性禅心虚弱不定的原因,并非物我之间总有佛性的映照,因此能作禅石的石头是非常有限的。当我们自己的佛性禅心虚弱不定的时候,可以依靠(凭借)身外物的影像,来平和我们躁动的心。能起到这样作用的石头,就是禅石了。所以观赏石里禅石是一类特定形态的石头,是一类能够激发人们真性美的石头,是一类能够帮助赏石者进入平静、安宁、和谐状态的石头。
禅石的表现形态
主持人:什么形态的奇石才能谓之“禅石”?
秦文联:
一、禅宗总是把生命艺术化,艺术生命化。禅宗从美学角度讲就是以圆为美的审美思想论,推崇的是心物 园融一体的“大圆境”。所以圆满形态首先被公认为禅石形态;
二、禅宗思想影响和引领下的赏石观,由儒家的人合与天,道家的天人合一,上升到了一种空灵园融的境界,根本不再考虑人,也不在考虑天,把自己完全融入其中,比如石头中去,抛开一切虚饰华丽的外表,直指人心,洞察事物的本质。在审美过程中,主体对客体的审美审视也就自然而然的偏重于内心世界的感悟和品味上。所以,佛祖、道士、观音等形态以及蒲团、木鱼等颇具佛性的奇石被不少石友认为是禅石;
三、禅宗艺术在感情上总是平静恬淡,意象的选择也总是大自然中最能够表现清旷闲适的那些景物,在物象上,禅宗总是选择幽谷,荒寺,白云,月夜,寒松,远山,暮雨,寒江;总之,凡品位高的禅石,或气势高远,或景色荒寒,或清幽闲适,或自然淡泊,或虚融空灵,或静穆旷达,或空寂寥落,或悠远深长。
所以,不单单是佛祖之形态和圆满之形态的奇石才是禅石,能够被称之为禅石的形态还很多:幽谷,荒寺、白云、月夜 、寒松、远山 、暮雨、寒江、充满和谐,朦胧,恬美,平淡意境的奇石都可以是禅石的表现形态。
结语:
秦文联最后讲了一个小故事:一位著名的雕塑家应邀雕百尊佛,佛像雕成之日,众僧前来,异口同声说“这哪里是佛,分明是人啊!”。雕塑家非常纳闷“以我的功底雕的难道不像?”,于是找来佛家典籍,非要看看到底什么是佛,越看越着迷,一看就是三年。三年之后,当他怀着一颗虔诚恭敬之心重新再塑造好这百佛之后,众僧前来,竟齐刷刷跪下便拜。前后百佛看似完全形似,为何前者被称之为人,后者却被拜之为佛呢?
所以需要强调一点的是单纯具备形而无其神韵内涵的石头不能称之为禅石,重要的还是考量其能否使赏石者进入平静、安宁、和谐的状态。六祖慧能提出以“净心”观照宇宙万物的思想,就是实现禅意追求的关键所在。
记者王维芳寄语读者:
魏晋以后,中土的儒教和道教在佛教的冲击下,不得不改弦更张。三教互相批判,相互吸收,为三教互动提供了新的参照系和新的价值导向,独尊儒学、罢黜百家的文化传统被三教的兼容并蓄所代替,兼容并蓄所蕴涵的价值取向,是融突和合三教而诞生的新的合体.朱熹的<理学>就是三教合一的典范.中华石文化尤其体现兼容并蓄,“禅石可悟道,道石能参禅”,禅和道之与石文化的影响和印记已经很难说谁之更深,如果非要定一个,我个人认为,道家思想相对而言对于石文化之影响要深厚一些。所以禅石很多意义上是“道石”。“石道”之说即是东方石文化兼容并蓄的表现。(将刊登在《中华奇石》杂志2010第9期。援引2009年11月《中华奇石》刊出的秦文联文章《中华石文化之根---儒,道,佛家谁之深?》)
范文三:簙谓之蔽,或谓之璇
我想我是忘了,那种明明很重要,却又被时间埋没的事。
心中的美玉,总该给它取个名字了。
或谓之蔽,或谓之璇。
——题记( 书村网 www.mcqyy.com )
阳光缤纷的午后,街上的行人来来往往,他们奔走在各自的生活中,扮演着不同的角色,做着不同的事。我和她坐在咖啡店的大伞下,木制的桌面上铺着卡其色的亚麻布,玻璃杯里,放着一束应季的鲜花,是刚刚从花房摘下的,还沾着水珠,阳光从叶隙间滑下,照到身上,也不热,暖暖的。
我们各自捧了一本书,和来往的人群不同,十分悠闲的样子。
我在笑。
我和她,原本是两个世界的人。
在刚刚开始和她接触的时候,我们还算不上是朋友,有一天放学回家,校门口的路边摊吸引了她,我随着她的视线望去,穿着秋冬校服的同学们正三个一群,五个一伙地簇拥在一个又一个的小吃摊边,又见她把及腰的长发帅气的甩到身后,双手叉腰,眯着眼睛在人群中寻找着什么,我瞬间明白了她的意图。
我白了她一眼,但她好像没有看到。
“喂,走不走啊。”我认为我的声音已经恰到好处的透露出我的不耐烦,她应该会听得明白。
没想到她竟然不理会我,目光继续搜寻着,嘴里嘟囔着“再等等”之类的话,本着我一贯的良好素质,我还是忍住了,想要自己离开的冲动,但还是一直蹙着眉,颇有微词。
她突然从我身边快速蹿了出去,只见她在不远处拍着一个男生的肩膀,看得出是我们班级的,那男生脸上写着无奈,看她笑得活泼开朗,又撒泼打诨的憨态模样,也笑了笑,把手里的小吃匀了一些给她。
她很满足,一路上蹦蹦跳跳的,我却一路沉默,皱着的眉始终没有抚平。
“在想什么?”她的声音把我从回忆里拉扯出来,空气中全是属于她的馨香气息,及腰的长发标志性的垂在身后。
“没什么。”我把书本拿在手上,调整了一个下坐姿,深吸一口气。“就是想起了一些以前的事。”
其实她也不是那样讨厌。随着友谊的发展,我也渐渐加入了她那种无礼的“行业”中,之后才发现,那样的她才最真实,我喜欢看着她在回家的路上嬉笑的样子,大家也一定喜欢,内向的我也因为她的缘故开始变得活泼起来,特别是在书店遇见她之后,我们的友谊更加坚固,因为有了共同的爱好,而更多地共同点,也进而被发掘出来。
和她初见的那天是最不能忘的。
那是开学的时候,刚刚步入初中门槛的我,面对新的环境,面对新的同学,是那样的无助无奈,同学们都兴奋的讨论着我们的校园,规划着未来的学习生活,只有我一个人,静静的,坐在角落里看书。
空气开始变得粘稠,我觉得我是那样的格格不入。
拉开靓蓝色的窗帘,梧桐的叶子在晚夏的晨风中摇摆,薄薄的晨霭将阳光微微的挡住,有一片叶子从窗口飘进,我身侧的人抢在我之前抓住了它。
我没有想到我身边竟然还有人,连忙回头望去,女生及腰的长发被发带高高的束起,披散在身后,眼角微翘,却又因嘴角上扬的弧度而变得弯弯的,她的眼中泛滥着安详的柔和,使一切平静下来,她的一只手捧着书,而另一只手中攥着的,正是那片梧桐叶。
有人和我一样。
我想到了一个字,璇,美玉的意思。
朋友……
呼呼的风声从耳边滑过,我抬头望天,已经变得微微有些阴沉,桌上的咖啡散尽了最后一丝香甜,我端起白瓷杯,一饮而尽。
我拍了拍她的手。
“陈,起风了,走吧。”
????初二:李文沁
范文四:[转载]如何谓之心?如何谓之佛?
转载]如何谓之心?如何谓之佛?
(2015-02-03 17:43:08)
转载▼
标签: 转载
分类: 释.道.儒
原文地址:如何谓之心?如何谓之佛?作者:
《彻悟大师复香严居士书》:“直须深信谛了,心外无佛,佛外无心,全心即佛,全佛即心,一念现前,即一念相应,念念现前,即念念相应,但使此念常现在前,便是真实效验。离此念外,别求效验,便是间断,便不亲切,便入歧途矣。经云:“是心作佛,是心是佛”,正此之谓也。”一大段,虽信为修净之肯綮(qìng),而反复玩索,其理莫易贯通,今谨胪列疑难,仰乞详赐剖释,藉兹增植净因,诚为大幸。
(一)“心外无佛,佛外无心,全心即佛,全佛即心”,如何谓之心?如何谓之佛?向只依稀解说,以现前起念为心,不识当否?
答,现前念佛之心,即是心。现前所念之佛,即是自心所作之佛。故曰:“是心作佛,是心是佛”。
(二)此四句,与《心经》“色不异空,空不异色,色即是空,空即是色”,意义相似否?
答,《心经》之色空,比《观经》之作是较阔大。《观经》作是,比心经之不异即是,更亲切。
(三)既云“心外无佛,佛外无心”,复云“全心即佛,全佛即心”,是何旨趣?
答,下二句,重释上二句之义。
(四)“一念现前”,及“念念现前”之“念”字,与心佛之“心”字,意义相同否?
答,“心”与“念”,只是一个。不过约常存者,名之为“心”。约现起者,名之为“念”耳。
(五)“心外无佛,佛外无心”四句,是否指性德?“一念现前,一念相应”四句,是否指修德?
答,二俱是修德。以心外无佛,佛外无心,是功夫所致故也。
(六)“一念现前,即一念相应”四句,初机即能是,久修即能是?
答,初机有初机之相应。久修有久修之相应。何可死执。
选于印光法师文钞三编卷四
《答念佛居士问(即周孟由)》
范文五:DSP FFT(精)
目录视图
摘要视图
订阅
原创:
143篇 转载:44篇 译文:1篇
评论:75条
个人资料
??
xiahouzuoxin
?
?
访问:109502次 积分:2589分 排名:第 4225名
Github
https://github.com/xiahouzuoxin???
从 2014年 3月起文章将首先发布 到 Github 源码托管站点上,此处
更新不一定及时,博文都是从 Github 上复制过来,有些图片可 能显示较慢,有需要请移步:???
Github 最新文章 ?
文章搜索
?
博客专栏
DSP 算法研究与 实现 ?文章:7篇 阅读:8976?
monkey_zx
一个人的喜欢就是把自己对偶然间闪过的念想坚持,直到它变成一种习惯
页码, 1/13(W)
w
?
IFFT 的 BASIC 程序伪代码如下(IFFT 通过调用 FFT 计算):
?
?
FFT 算法的流程图如下图,总结为 3过程 3循环:
(1) 3过程:单点时域分解(倒位序过程) ?+?单点时域计算单点频谱 ?+?频域合成 (2) 3循环:外循环 —— 分解次数,中循环 ——sub-DFT 运算,内循环 ——2
点蝶形算法
文章存档 2014年 07月 (5)2014年 06月 (4)2014年 05月 (4)2014年 04月 (9)2014年 03月 (6)2014年 02月 (10)2014年 01月 (6)2013年 12月 (14)2013年 11月 (9)2013年 10月 (5)2013年 09月 (10)2013年 08月 (31)2013年 07月 (20)2013年 05月 (7)2013年 03月 (2)2012年 12月 (4)2012年 11月 (8)2012年 10月 (6)2012年 09月 (6)2012年 08月 (16)2012年 07月 (4)2012年 06月 (2)
最新评论
读取 *.wav音频文件 ?lantiancaiyun :?@xiahouzuoxin:好 的谢谢啦。 ?
TMS320C6713烧写 Flash 的通用方法 ?fangxing523:?@xiahouzuoxin:对 了,还有个问题,就是
Flash_Writes(addr+(i<1),...?tms320c6713烧写 flash="" 的通用方法="" ?fangxing523:?@xiahouzuoxin:恩,谢谢啦!那我也把数组里的="" 32位全改成="" 16位的看看好使不。="" 太谢谢你了。="">1),...?tms320c6713烧写>
TMS320C6713烧写 Flash 的通用方法 ?xiahouzuoxin :?@fangxing523:对,因为我在设计的电路上只接 了 DSP 的低 16位数据线,而且 Flash 也是 1...?
TMS320C6713烧写 Flash 的通用方法 ?fangxing523:?
@xiahouzuoxin:Flash_Writes(addr+(i<1),*(ptr+i))的意 ...?tms320c6713烧写="" flash="" 的通用方法="" ?fangxing523:?@xiahouzuoxin:恩,好的。主要是你数组被你改="" 成="" 16位的了吗?不然数组是="" 32位="" 的,="">1),*(ptr+i))的意>
TMS320C6713烧写 Flash 的通用方法 ?xiahouzuoxin :?@fangxing523:在 Flash 工程的 main 函数里面,以烧 写 boot 为例, ?/*?Wr...?
TMS320C6713烧写 Flash 的通用方法 ?xiahouzuoxin :?@qq_17334949:;?Address?of?the?generated?boot-table...?
TMS320C6713烧写 Flash 的通用方法 ?fangxing523:?@xiahouzuoxin:对 了,咱们 DSP 从 FLASH 搬用程序 的时候是先搬低 16位,再搬高 16位吗 ...?
TMS320C6713烧写 Flash 的通用方法 ?qq_17334949:?好的,谢谢了。 我刚毕业,所以解决这个问题有 点费劲。我使用了你上面这些文 件还是有以下两个疑问:1、如 果 ...?
CSDN 外链
Matrix67?
酷壳 ??
吴再柱与公民教育 ?
伯乐在线 ?
Stack?Overflow??
Stack?Exchange??
Embedded?Gurus??
dsprelated??
FPGA-kingst??
gnuarm?
Learn?C?The?Hard?Way?
Analog?Dialogue?
罗绍峰 ?
水木思 ?6#105?
?分解过程或者说倒位序的获得参考下图理解:?
?
2. FFT的 DSP 实现
下面为本人使用 C 语言实现的 FFT 及 IFFT 算法实例,能计算任意以 2为对数底的采样点数的 FFT ,算法参考上面给 的流程图。
/*
* zx_fft.h
*
* Created on: 2013-8-5
* Author: monkeyzx
*/
#ifndef ZX_FFT_H_
#define ZX_FFT_H_
typedef float FFT_TYPE;
#ifndef PI
#define PI (3.14159265f)
#endif
typedef struct complex_st {
FFT_TYPE real;
FFT_TYPE img;
} complex;
int fft(complex *x, int N);
int ifft(complex *x, int N);
void zx_fft(void);
#endif /* ZX_FFT_H_ */
?
/*
* zx_fft.c
*
* Implementation of Fast Fourier Transform(FFT)
* and reversal Fast Fourier Transform(IFFT)
*
* Created on: 2013-8-5
* Author: monkeyzx
*/
#include
#include #include /* * Bit Reverse * === Input === * x : complex numbers * n : nodes of FFT. @N should be power of 2, that is 2^(*) * l : count by bit of binary format, @l=CEIL{log2(n)} * === Output === * r : results after reversed. * Note: I use a local variable @temp that result @r can be set * to @x and won't overlap. */ static void BitReverse(complex *x, complex *r, int n, int l) { int i = 0; int j = 0; short stk = 0; static complex *temp = 0; temp = (complex *)malloc(sizeof(complex) * n); if (!temp) { return; } for(i=0; i stk = 0; j = 0; do { stk |= (i>>(j++)) & 0x01; if(j<> { 页码, 4/13(W) w stk <=>=> } }while(j<> if(stk < n)="" {="" 满足倒位序输出=""> temp[stk] = x[i]; } } /* copy @temp to @r */ for (i=0; i r[i] = temp[i]; } free(temp); } /* * FFT Algorithm * === Inputs === * x : complex numbers * N : nodes of FFT. @N should be power of 2, that is 2^(*) * === Output === * the @x contains the result of FFT algorithm, so the original data * in @x is destroyed, please store them before using FFT. */ int fft(complex *x, int N) { int i,j,l,ip; static int M = 0; static int le,le2; static FFT_TYPE sR,sI,tR,tI,uR,uI; M = (int)(log(N) / log(2)); /* * bit reversal sorting */ BitReverse(x,x,N,M); /* * For Loops */ for (l=1; l<=m; l++)="" {="" loop="" for="" ceil{log2(n)}="">=m;> le = (int)pow(2,l); le2 = (int)(le / 2); uR = 1; uI = 0; sR = cos(PI / le2); sI = -sin(PI / le2); for (j=1; j<=le2; j++)="" {="" loop="" for="" each="" sub="" dft="">=le2;> //jm1 = j - 1; for (i=j-1; i<=n-1; i+="le)" {="" loop="" for="" each="" butterfly="">=n-1;> ip = i + le2; tR = x[ip].real * uR - x[ip].img * uI; tI = x[ip].real * uI + x[ip].img * uR; x[ip].real = x[i].real - tR; x[ip].img = x[i].img - tI; x[i].real += tR; x[i].img += tI; } /* Next i */ tR = uR; uR = tR * sR - uI * sI; uI = tR * sI + uI *sR; } /* Next j */ } /* Next l */ return 0; } /* * Inverse FFT Algorithm * === Inputs === * x : complex numbers * N : nodes of FFT. @N should be power of 2, that is 2^(*) * === Output === * the @x contains the result of FFT algorithm, so the original data * in @x is destroyed, please store them before using FFT. */ int ifft(complex *x, int N) { int k = 0; for (k=0; k<=n-1; k++)="">=n-1;> x[k].img = -x[k].img; } fft(x, N); /* using FFT */ for (k=0; k<=n-1; k++)="">=n-1;> x[k].real = x[k].real / N; x[k].img = -x[k].img / N; } return 0; } /* * Code below is an example of using FFT and IFFT. */ #define SAMPLE_NODES (128) complex x[SAMPLE_NODES]; int INPUT[SAMPLE_NODES]; int OUTPUT[SAMPLE_NODES]; static void MakeInput() { int i; for ( i=0;i { x[i].real = sin(PI*2*i/SAMPLE_NODES); x[i].img = 0.0f; INPUT[i]=sin(PI*2*i/SAMPLE_NODES)*1024; } } static void MakeOutput() { int i; for ( i=0;i { OUTPUT[i] = sqrt(x[i].real*x[i].real + x[i].img*x[i].img)*1024; } } void zx_fft(void) { MakeInput(); fft(x,128); MakeOutput(); ifft(x,128); MakeOutput(); } ? 程序在 TMS320C6713上实验,主函数中调用 zx_fft()函数即可。 ? FFT 的采样点数为 128,输入信号的实数域为正弦信号,虚数域为 0,数据精度定义 FFT_TYPE为 float 类型, MakeInput 和 MakeOutput 函数分别用于产生输入数据 INPUT 和输出数据 OUTPUT 的函数,便于使用 CCS?的 Graph 功能绘制波形图。这里调试时使用 CCS?v5中的 Tools?->?Graph功能得到下面的波形图(怎么用自己琢磨, 不会的使用 CCS?的 Help )。 输入波形 ?输入信号的频域幅值表示 ?FFT运算结果 ? ?对FFT运算结果逆变换(IFFT) ? ? 如何检验运算结果是否正确呢?有几种方法: (1)使用matlab验证,下面为相同情况的matlab图形验证代码 SAMPLE_NODES = 128; i = 1:SAMPLE_NODES; x = sin(pi*2*i / SAMPLE_NODES); subplot(2,2,1); plot(x);title('Inputs'); axis([0 128 -1 1]); y = fft(x, SAMPLE_NODES); subplot(2,2,2); plot(abs(y));title('FFT'); axis([0 128 0 80]); z = ifft(y, SAMPLE_NODES); subplot(2,2,3); plot(abs(z));title('IFFT'); axis([0 128 0 1]); ? ?(2)使用IFFT验证:输入信号的FFT获得的信号再IFFT,则的到的信号与原信号相同 可能大家发现输入信号上面的最后IFFT的信号似乎不同,这是因为FFT和IFFT存在精度截断误差(也叫数据截断 噪声,意思就是说,我们使用的float数据类型数据位数有限,没法完全保留原始信号的信息)。因此,IFFT之 后是复数(数据截断噪声引入了虚数域,只不过值很小),所以在绘图时使用了计算幅值的方法, C代码中: OUTPUT[i] = sqrt(x[i].real*x[i].real + x[i].img*x[i].img)*1024; matlab代码中: subplot(2,2,3); plot(abs(z));title('IFFT'); 所以IFFT的结果将sin函数的负y轴数据翻到了正y轴。另外,在CCS v5的图形中我们将显示信号的幅度放大了 1024倍便于观察,而matlab中没有放大。 ================= 更正 更正 。。。 ================= 上面程序中的BitReverse函数由于使用了malloc函数,当要分配的n比较大时,在DSP上运行会出现一定的问题, 因此改用伪代码中提供的倒位序方法更可靠。 修正后的完整FFT代码文件粘贴如下,在实际的DSP项目中测试通过,可直接拷贝复用。 /* * zx_fft.h * * Created on: 2013-8-5 * Author: monkeyzx */ #ifndef _ZX_FFT_H #define _ZX_FFT_H #include #define TYPE_FFT_E float /* Type is the same with COMPLEX member */ #ifndef PI #define PI (3.14159265f) #endif typedef COMPLEX TYPE_FFT; /* Define COMPLEX in Config.h */ extern int fft(TYPE_FFT *x, int N); extern int ifft(TYPE_FFT *x, int N); #endif /* ZX_FFT_H_ */ ? /* * zx_fft.c * * Implementation of Fast Fourier Transform(FFT) * and reversal Fast Fourier Transform(IFFT) * * Created on: 2013-8-5 * Author: monkeyzx * * TEST OK 2014.01.14 * == 2014.01.14 * Replace @BitReverse(x,x,N,M) by refrence to * */ #include /* * FFT Algorithm * === Inputs === * x : complex numbers * N : nodes of FFT. @N should be power of 2, that is 2^(*) * === Output === * the @x contains the result of FFT algorithm, so the original data * in @x is destroyed, please store them before using FFT. */ int fft(TYPE_FFT *x, int N) { int i,j,l,k,ip; static int M = 0; static int le,le2; static TYPE_FFT_E sR,sI,tR,tI,uR,uI; M = (int)(log(N) / log(2)); /* * bit reversal sorting */ l = N / 2; j = l; //BitReverse(x,x,N,M); for (i=1; i<=n-2; i++)="">=n-2;> if (i < j)=""> tR = x[j].real; tI = x[j].imag; x[j].real = x[i].real; x[j].imag = x[i].imag; x[i].real = tR; x[i].imag = tI; } k = l; while (k <= j)="">=> j = j - k; k = k / 2; } j = j + k; } /* * For Loops */ for (l=1; l<=m; l++)="" {="" loop="" for="" ceil{log2(n)}="">=m;> le = (int)pow(2,l); le2 = (int)(le / 2); uR = 1; uI = 0; sR = cos(PI / le2); sI = -sin(PI / le2); for (j=1; j<=le2; j++)="" {="" loop="" for="" each="" sub="" dft="">=le2;> //jm1 = j - 1; for (i=j-1; i<=n-1; i+="le)" {="" loop="" for="" each="" butterfly="">=n-1;> ip = i + le2; tR = x[ip].real * uR - x[ip].imag * uI; tI = x[ip].real * uI + x[ip].imag * uR; x[ip].real = x[i].real - tR; x[ip].imag = x[i].imag - tI; x[i].real += tR; x[i].imag += tI; } /* Next i */ tR = uR; uR = tR * sR - uI * sI; uI = tR * sI + uI *sR; } /* Next j */ } /* Next l */ return 0; } /* * Inverse FFT Algorithm * === Inputs === * x : complex numbers * N : nodes of FFT. @N should be power of 2, that is 2^(*) * === Output === * the @x contains the result of FFT algorithm, so the original data * in @x is destroyed, please store them before using FFT. */ int ifft(TYPE_FFT *x, int N) { int k = 0; for (k=0; k<=n-1; k++)="">=n-1;> x[k].imag = -x[k].imag; } fft(x, N); /* using FFT */ for (k=0; k<=n-1; k++)="">=n-1;> x[k].real = x[k].real / N; x[k].imag = -x[k].imag / N; } return 0; } ? 另外,可能还需要您在其它头文件中定义 COMPLEX 的复数类型 ? typedef struct { float real; float imag; } COMPLEX; ? ===================== 增加:FFT频谱结果显示 ? ===================== clc; clear; % Read a real audio signal [fname,pname]=uigetfile(... {'*.wav';'*.*'},... 'Input wav File'); [x fs nbits] = wavread(fullfile(pname,fname)); % Window % N = 1024; N = size(x,1); x = x(1:N, 1); % FFT y = fft(x); % 频率对称,取 N/2 y = y(1:N/2); % FFT频率与物理频率转换 x1 = 1:N/2; x2 = (1:N/2)*fs/(N/2); % /1000表示 KHz log_x2 = log2(x2); % plot figure, subplot(2,2,1);plot(x); xlabel('Time/N');ylabel('Mag');grid on title('原始信号 '); subplot(2,2,2);plot(x1, abs(y)); xlabel('Freq/N');ylabel('Mag');grid on title('FFT信号 /横坐标为点数 '); subplot(2,2,3);plot(x2,abs(y)); xlabel('Freq/Hz');ylabel('Mag');grid on title('FFT信号 /横坐标为物理频率 '); subplot(2,2,4);plot(log_x2,abs(y)); xlabel('Freq/log2(Hz)');ylabel('Mag');grid on title('FFT信号 /横坐标为物理频率取 log'); % 更常见是将幅值取 log y = log2(abs(y)); figure, plot(x2,y); xlabel('Freq/Hz');ylabel('Mag/log2');grid on title('幅值取 log2'); ? ? 转载请注明出处范文大全网 » 国学经典之生之来谓之精