随笔分类 -  算法

摘要:原文链接:http://blog.csdn.net/qshpeng/archive/2007/11/10/1877000.aspx在程序设计过程中,可能碰到需要对字符串型数学表达式进行求值,通用且完美的方法是将字符串表达解析,生成表达树,然后进行计算。编译器就是使用这种方法来解析程序中的表达式的。这种方法实现起来有点难度,需要考虑运算符的优先级,括号的配对,堆栈的使用等等。我们正常情况下看到的数学表达式如果用二叉树遍历的话,恰好是中序遍历,故叫做中序表达式。除此之外,还有前序表达式,后序表达式。如:a+b+c(中序),++abc(前序),ab+c+(后序),如果表达式含有×,/,() 阅读全文
posted @ 2009-10-19 21:33 OYJJ 阅读(517) 评论(0) 推荐(0)
摘要:任何一个数字滤波器都有幅频特性和相频特性,如果对于滤波不要求实时性,我们可以设计一种滤波器,使得它的相频特性始终为0,这种数字滤波器就称为零相移数字滤波器。在Matlab中,零相移滤波器对应的函数名称为filtfilt,其帮助中提供的信息如下,翻译一下:FILTFILT Zero-phase forward and reverse digital filtering. Y = FILTFILT(B, A, X) filters the data in vector X with the filter described by vectors A and B to create the filt 阅读全文
posted @ 2009-09-15 21:55 OYJJ 阅读(2573) 评论(0) 推荐(0)
摘要:由于项目需要,需要将数据采集得到的点数转化为固定点数,使用分段线性插值其实现代码如下: /// <summary> /// 分段线性插值,将一组数插值为所需点数 /// </summary> /// <param name="dataIn">待插值的数据数组</param> /// <param name="n">插值点数</param> /// <returns>插值后的数据数组</returns> public static double[] Interp 阅读全文
posted @ 2009-09-15 19:57 OYJJ 阅读(2665) 评论(0) 推荐(0)
摘要:要进行FFT运算首先要构造复数类,参考http://blog.csdn.net/iamoyjj/archive/2009/05/15/4190089.aspx下面的程序在依赖上述复数类的基础上实现了FFT正反变换算法和频域滤波算法,另外由于一般如果是对实数进行FFT的话,要将FFT得到的复数数组转为实数数组,下面类中的Cmp2Mdl方法的作用就是这个。这个FFT算法是基-2FFT算法,因此,如入的序列必须是2的n次方个点长。频域滤波的基本原理是:1、 对输入序列进行FFT2、 得到的频谱乘以一个权函数(滤波器,系统的传递函数)3、 得到的结果进行IFFT4、 如果是实数运算的话用Cmp2Mdl 阅读全文
posted @ 2009-05-15 20:11 OYJJ 阅读(6264) 评论(3) 推荐(1)
摘要:实现复数的加、减、乘、除,求实部、虚部、模和命令行输出。源代码如下: /// <summary> /// 复数类 /// </summary> public class Complex { /// <summary> /// 默认构造函数 /// </summary> public Complex() : this(0, 0) { } /// <summary> /// 只有实部的构造函数 /// </summary> /// <param name="real">实部</param& 阅读全文
posted @ 2009-05-15 19:43 OYJJ 阅读(2944) 评论(0) 推荐(0)
摘要:As I said, this wavelet theory is truly the result of a dialogue between scientists who often met by chance and were ready to listen. From my totally subjective point of view, among the many researchers who made important contributions, I would like to single out one, Yves Meyer, whose deep scientif 阅读全文
posted @ 2008-11-28 13:44 OYJJ 阅读(281) 评论(1) 推荐(0)