我的日历


我的BLOG

咖啡豆
水最无形,水却也是最执着的。 真是扯淡~


用户登录

用户登录
用户名:
密   码:
          

日志分类



最后更新



最新评论



存档



    我的链接



    00Counter.com



     
    THIS BLOG IS POWERED BY BLOGBUS.COM  

    分页共49页 1 2 3 4 5 6 7 8 9 10 下一页 最后一页

    新地址 - []
     发表于13:40:00 2009-09-10

    http://ppcode.cublog.cn

    新地址支持代码格式、颜色。空间比较到,可存比较多的图片。

    阅读全文  |  评论(0)  |  Trackback(0)  | 编辑  



    傅立叶变换、拉普拉斯变换、Z变换之间最本质的区别是什么? - []
     发表于12:23:42 2009-06-06

    简单的说:傅立叶变换就是将任一个函数展开成一系列正弦函数的形式,从而能够在频域进行频谱分析。而拉普拉斯变换是复频域,它的的引进主要是对微分方程起到了简便的变换作用,试想2阶的微分方程就够麻烦的了,高阶就别指望手动解了,数学系的牛人别见怪。所以拉式变换就将时域的微分方程变换成代数方程。而到了离散系统中,又出现了差分方程,因此人们就想既然连续系统中有拉式变换,那么是不是离散系统中也会有一个方法能够起到相同的简化作用呢?于是Z变化就提了出来。

    阅读全文  |  评论(0)  |  Trackback(0)  | 编辑  



    快速傅立叶变换(FFT) - []
     发表于11:52:03 2009-06-06

    只要是理工科毕业的朋友,都学过傅立叶级数与傅立叶变换,但真正要与实际应用联系起来,用它来阐述应用中的各类问题,我们总会感觉概念模糊,似懂非懂,不知从何说起。是的,作者和你一样,常常有这样的体会。现在,让我与你一起重新学习傅立叶的基本理论和应用,最后还给出一份FFT(快速傅立叶变换)的源码(基于C)。希望对你有所帮助。Let’s go!
      
      1. 历史回顾
      谈傅立叶变换,不能不说三角函数。三角函数起源于18世纪,主要是与简谐振动的研究有关。当时的科学家傅立叶对三角函数作了深入研究,并用三角级数解决了很多热传导的问题。三角函数的展开式如下:
      
      f(t) = (1/2a0) + (a1·cos(x)+b1·sin(x)) + (a2·cos(2x)+b2·sin(2x)) + …
      其中,系数a和b表示不同频率阶数下的幅度。
       
      成立条件:
      n 周期性条件,也就是说f(x)描述的波形必须每隔一段时间周期T就会重复出现;
      n Dirichlet条件,周期T内,有限的最大最小值,有限的不连续点;
      任何区间内绝对可积;
      
      研究目的:
      把一个基于时间变量t的函数展开成傅立叶级数的目的是分解为不同的频率分量,以便进行各种滤波算法。这些基本的组成部分是正弦函数SIN(nt)和余弦函数COS(nt)。
      
      应用领域:
      l 信号分析,包括滤波、数据压缩、电力系统的监控等;
      l 研究偏微分方程,比如求解热力学方程的解时,把f(t)展开为三角级数最为关键。
      l 概率与统计,量子力学等学科。
      
      2. 傅立叶变换
      H(w) = ∫h(t)·e^jwt·dt, (区间:-∽~+∽,w = 2πf)
       讨论:这里为什么会选择复指数的形式而没有用正弦余弦表示?
      答案:欧拉公式的引入使得这条经典的数学公式变得更简单,即e^jx = cos(x) + jsin(x)
       3. 快速傅立叶变换(FFT)
    常规的傅立叶变换算法并不适用于嵌入式控制系统,原因是运算量太大(涉及到复数运算),比如离散的傅立叶变换等同于用序列Y(n×1列矢量)乘以n×n 矩阵Fn,需要n×n次乘法。若n=1024,则是104,8576次乘法运算。哇,这么多呀!什么概念呢?如果你选用的CPU单周期指令为25ns,  单周期也可以完成一次乘法运算,那么要计算1024点的傅立叶变换则需要26.2144ms,这还不包括加法或其它运算,对于大多数实时系统,这个处理时间实在太长。于是寻找一个快速的傅立叶变换算法是人们所期望的。
      本来我想把FFT的整个数学推导过程列完出来,但当自己硬着头皮看完后,发现对我没有任何用处,我又不是专门研究数学算法的,哪有那么多时间跟着书本的公式去慢慢推导。我想,这些推导问题还是让数学家想去吧。我需要的不过是理解它,然后学会应用它就行。有兴趣的读者可以参考相关的资料,这方面的资料实在太多了。
      虽然FFT大幅度地降低了常规傅立叶变换的运算量,但对于一般的单片机而言,处理FFT运算还是力不从心。主要原因是FFT计算过程中的蝶形运算是复数运算,要分开实部和虚部分别计算,想想这是多么繁琐的事情。可能会有些初学者认为,有这么复杂吗?我在PC上使用C++一样可以对复数直接进行加、减、乘、除运算。你说得不错,可以这么做,但那是C++封装了对复数处理的类,直接调用就行。在PC上运算这种类型的算法一般不考虑时间和空间,多一两秒的运行时间不会有什么灾难性的结果。
      所以我们要衡量一个处理器有没有足够的能力来运行FFT算法,根据以上的简单介绍可以得出以下两点:
      l 处理器要在一个指令周期能完成乘和累加的工作,因为复数运算要多次查表相乘才能实现。其二就是间接寻址,可以实现增/减1个变址量,方便各种查表方法。
      l FFT要对原始序列进行反序排列,处理器要有反序间接寻址的能力。
      
      所以,在数字信号的分析处理应用中,DSP比其它的处理器有绝对的优势,因为DSP完全具备以上条件。这就是单片机(51系列,AVR,PIC等等)或ARM处理器很少用来进行数字信号分析的原因。
      
      4. FFT的C实现方法
      //**********************************************************
      // 函数名: 快速傅立叶变换(来源《C常用算法集》)
      // 本函数测试OK,可以在TC2.0,VC++6.0,Keil C51测试通过。
      // 如果你的MCS51系统有足够的RAM时,可以验证一下用单片机处理FFT有多么的慢。
      //
      // 入口参数: 
      // l: l = 0, 傅立叶变换; l = 1, 逆傅立叶变换
      // il: il = 0,不计算傅立叶变换或逆变换模和幅角;il = 1,计算模和幅角
      // n: 输入的点数,为偶数,一般为32,64,128,...,1024等
      // k: 满足n=2^k(k>0),实质上k是n个采样数据可以分解为偶次幂和奇次幂的次数
      // pr[]: l=0时,存放N点采样数据的实部
      // l=1时, 存放傅立叶变换的N个实部
      // pi[]: l=0时,存放N点采样数据的虚部 
      // l=1时, 存放傅立叶变换的N个虚部
      //
      // 出口参数:
      // fr[]: l=0, 返回傅立叶变换的实部
      // l=1, 返回逆傅立叶变换的实部
      // fi[]: l=0, 返回傅立叶变换的虚部
      // l=1, 返回逆傅立叶变换的虚部
      // pr[]: il = 1,i = 0 时,返回傅立叶变换的模
      // il = 1,i = 1 时,返回逆傅立叶变换的模
      // pi[]: il = 1,i = 0 时,返回傅立叶变换的辐角
      // il = 1,i = 1 时,返回逆傅立叶变换的辐角
      // data: 2005.8.15,Mend Xin Dong
      void kkfft(double pr[], double pi[], int n, int k, double fr[], double fi[], int l, int il)
      {
       int it,m,is,i,j,nv,l0;
       double p,q,s,vr,vi,poddr,poddi;
      
       for (it=0; it<=n-1; it++)
       { 
       m = it; 
       is = 0;
       for(i=0; i<=k-1; i++)
       { 
       j = m/2; 
       is = 2*is+(m-2*j); 
       m = j;
       }
       fr[it] = pr[is]; 
       fi[it] = pi[is];
       }
      //----------------------------
       pr[0] = 1.0; 
       pi[0] = 0.0;
       p = 6.283185306/(1.0*n);
       pr[1] = cos(p); 
       pi[1] = -sin(p);
      
       if (l!=0) 
       pi[1]=-pi[1];
      
       for (i=2; i<=n-1; i++)
       { 
       p = pr[i-1]*pr[1]; 
       q = pi[i-1]*pi[1];
       s = (pr[i-1]+pi[i-1])*(pr[1]+pi[1]);
       pr[i] = p-q; 
       pi[i] = s-p-q;
       }
      
       for (it=0; it<=n-2; it=it+2)
       { 
       vr = fr[it]; 
       vi = fi[it];
       fr[it] = vr+fr[it+1]; 
       fi[it] = vi+fi[it+1];
       fr[it+1] = vr-fr[it+1]; 
       fi[it+1] = vi-fi[it+1];
       }
       m = n/2; 
       nv = 2;
      
       for (l0=k-2; l0>=0; l0--)
       { 
       m = m/2; 
       nv = 2*nv;
       for(it=0; it<=(m-1)*nv; it=it+nv)
       for (j=0; j<=(nv/2)-1; j++)
       { 
       p = pr[m*j]*fr[it+j+nv/2];
       q = pi[m*j]*fi[it+j+nv/2];
       s = pr[m*j]+pi[m*j];
       s = s*(fr[it+j+nv/2]+fi[it+j+nv/2]);
       poddr = p-q; 
       poddi = s-p-q;
       fr[it+j+nv/2] = fr[it+j]-poddr;
       fi[it+j+nv/2] = fi[it+j]-poddi;
       fr[it+j] = fr[it+j]+poddr;
       fi[it+j] = fi[it+j]+poddi;
       }
       }
      
       if(l!=0)
       for(i=0; i<=n-1; i++)
       { 
       fr[i] = fr[i]/(1.0*n);
       fi[i] = fi[i]/(1.0*n);
       }
      
       if(il!=0)
       for(i=0; i<=n-1; i++)
       { 
       pr[i] = sqrt(fr[i]*fr[i]+fi[i]*fi[i]);
       if(fabs(fr[i])<0.000001*fabs(fi[i]))
       { 
       if ((fi[i]*fr[i])>0) 
       pi[i] = 90.0;
       else 
       pi[i] = -90.0;
       }
       else
       pi[i] = atan(fi[i]/fr[i])*360.0/6.283185306;
       }
      return;
      }

    阅读全文  |  评论(0)  |  Trackback(0)  | 编辑  



    《我的团长我的团》之豆饼 - []
     发表于10:46:17 2009-06-01

     

    豆饼死了,昨天死的,继兽医之后他是第二个因为失去生命而让我感觉到很难受的,兽医是伤心死的,而豆饼是怎么死的呢?很直观的回答就是豆饼是因为受不了马克沁机枪的震动死的,也可以说和迷龙有着丝毫的关系,迷龙这个东北佬残忍的害死了豆饼,但似乎又和迷龙没有什么关系,迷龙不想让他死,谁都不想让他死,包括我们这些个在若干年以后回顾这段历史的人,但他确实是死了,他笑着带着回家的憧憬死了。


    豆饼的出现让我很诧异,我至始至终都认为他只是个孩子,禅达和南天门不应该出现他这样的身影,甚至于这个战争都不应该出现他的身影,比起烦了和迷龙他们他确实太小了,但有一个现实是不得不去面对的,那场战争是一场波及我们全体中国人的一场战争,所以我们看到了豆饼的出现,看到了这个还尚待稚气的孩子。

    豆饼在他们中间就是个被欺负的对象,一直都是。在禅达的收容站里他的年龄最小,力量自然也就最弱,唯一的朋友就是要麻。说句老实话在该剧上映之处我对豆饼并没有太深刻的印象,唯一能记住的就是在那些人里面有个人是嘎子演的,说话有点我们老家这边的味道,后来得知豆饼是河北人。一直都现在我都认为或许这个角色是当初导演为了王宝强而准备的,因为豆饼的憨厚并且傻傻的感觉很适合具有许三多这样人物性格的人来饰演,不过期间的原因我们不得而知了,但不能否认一点,嘎子所饰演的豆饼丝毫不比别人差。

    其实不仅是我们不能记住他,就连剧中的那些人也不能很详细的说出豆饼的所以然来,甚至连豆饼叫什么都不知道,只是知道有他这么个人存在着,时不常的还能拿来开涮和排解一下心中的无聊和烦闷,所以当豆饼从南天门失踪再次回来眼看将死的时候,他们开始拼命的回忆豆饼的一切,但很遗憾他们谁也没有回忆的起来,只有兽医一个人在心疼这个孩子,那一老一少在那个时候俨然成了亲人,成了能相扶走下去得亲人。

    豆饼是幸运的,就在大家都以为他必定要死的时候,他遇到了唐基这个还算善良的家伙,唐基算是豆饼此生中的贵人了,是他挽救了本应该失去的生命,我很能理解当时唐基在看到豆饼之后所说的那番话,很明显他亦是和兽医一样处于一个长辈或者长者对一个孩子的关怀,所以说豆饼很幸运,他幸运他遇到了兽医和唐基这样的长辈。

    豆饼没有朋友,要麻死之前他们俩是最好的朋友,登机的时候豆饼并没有和要麻在一起,我们看到了豆饼很紧张并且似乎要哭了,真是满脸的孩子气,在那个特殊的时期失去朋友是最伤心的事,但所幸的是豆饼后来还是遇到了要麻,但不幸的是要麻死了,豆饼从此就没有朋友了,龙文章给他安排了朋友,但这个朋友似乎只能是欺负他。

    豆饼很胆小,不过这一点我们很容易理解,毕竟他还只是个孩子,每次打仗的时候我们都能看到豆饼笨拙的身影和害怕的表情,甚至能看到他因为恐惧而流出来的眼泪和鼻涕,一个人惧怕某样东西是很难改变的,即便是处于那个特殊的战争时期,所以豆饼会在南天门的日军阵地上有手里拿着刺刀而不敢下手,还得依靠龙文章的帮助的那段画面。


    本不属于他的职责,我只能这么来形容战争和豆饼之间的关系,本不属于他的地方而他错误的来了,所以他必须得适应那里,而适应的结果就是勇敢的抱住那挺马克沁机枪,任凭机枪的震动和火热的枪管折磨着他的身体和精神,从这一点上来说豆饼似乎又是勇敢的,试问和豆饼一样年龄大的人谁能作出这样的举动,即便是烦了他们谁又能坚持得了这么长时间呢?但豆饼做到了,战争的洗礼让他变的勇敢,危急的形势让他不得不去这么做,还有一点就是他始终都认为自己是迷龙的副射手,他在履行着他的职责。

    当战争告一段落的时候,豆饼说他要歇一会,目光呆滞的说他要歇一会,是呀,他真的累了从钻出汽油桶他就一直没有停歇,从回到川军团他似乎也是一直都没有停歇,他累了,真的累了,他永远的休息了。

    豆饼说的最后一句话就是我要回家了,他告诉烦了他要回家了,当时看着豆饼嘴里留着血滚下山崖的样子我很痛心,真的有一种莫名的痛在心里,很疼很疼。是的豆饼确实回家了,就像烦了说的那样,他当初失踪在怒江,然后又是怒江把他带回来的,他现在又回到了怒江,怒江会带他回家的,希望怒江真的能把他带回家,回到那个本属于他的地方。

    豆饼死了,就那么笑着死了,也可以说豆饼回家了,笑着回家了,但是我的心很疼,非常的疼!

    出自铁血tiexue.net, 本贴地址: http://bbs.tiexue.net/post_3442376_1.html

    阅读全文  |  评论(0)  |  Trackback(0)  | 编辑  



    KYZ relay - [系统知识 ]
     发表于21:17:13 2009-05-21

    by AJU

    KYZ is a designation given to a relay used to create pulses for electrical metering applications. It is commonly a Form C relay. The term KYZ refers to the contact designations: K for common, Y for Normally Open, and Z for Normally Closed. When incorporated into an electrical meter, the relay changes state with each rotation (or half rotation) of the meter disc. Each state change is called a "pulse." When connected to external equipment, rate of use (kW) as well as total usage (kWh) can be determined from the rate and quantity of pulses.

    阅读全文  |  评论(0)  |  Trackback(0)  | 编辑