资源描述:
《matlab 数字信号处理编程导论 by source codenew》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Matlab数字信号处理编程导论bySourceCode最近在做信号处理和模式识别的相关技术的研究,有感于介绍这方面的入门文章太少,希望记录些有用的知识帮助需要从事相关工作的朋友少走些弯路。Matlab大家应该都不陌生,园子里面应该有相当一部分人是学电信或自动控制出身的,我们从事着不同的行业,我们每天写着不同的软件。如果你在做信号处理或者通信相关的行业,相信如果有一天你需要做些原型设计,本文可以引导你快速的开始。首先让我们来看看matlab的产品定位:TheLanguageofTechnicalComputingMA
2、TLAB® isahigh-levellanguageandinteractiveenvironmentthatenablesyoutoperformcomputationallyintensivetasksfasterthanwithtraditionalprogramminglanguagessuchasC,C++,andFortran. 过多的也没必要解释了,就是说一个字“快”,使用matlab可以使你想法更快的被实现出来,做设计的效率是其他编程语言说无法比拟的。据本人所知,数字信号处理里面的滤波器设计,频谱分
3、析,通信中的各种调制技术的设计,matlab可以说已经成了标准工具,就像windows上开发C#代码,大部分人都使用visualstudio一样。 首先让我们看看如何产生一些简单有用的序列如何编写:---注:源代码来自互联网,仅供学习参考之用单位冲击:function [x,n] = impseq(n0,n1,n2)% Generates x(n) = delta(n-n0); n1 <= n,n0 <= n2% ----------------------------------------------% [x,n
4、] = impseq(n0,n1,n2)%if ((n0 < n1)
5、 (n0 > n2)
6、 (n1 > n2)) error('arguments must satisfy n1 <= n0 <= n2')endn = [n1:n2];%x = [zeros(1,(n0-n1)), 1, zeros(1,(n2-n0))];x = [(n-n0) == 0]; 单位阶越: function[x,n]=stepseq(n0,n1,n2)%Generatesx(n)=u(n-n0);n1<=n,n0<=
7、n2%------------------------------------------%[x,n]=stepseq(n0,n1,n2)%if((n08、(n0>n2)
9、(n1>n2))error('argumentsmustsatisfyn1<=n0<=n2')endn=[n1:n2];%x=[zeros(1,(n0-n1)),ones(1,(n2-n0+1))];x=[(n-n0)>=0]; 再看看如何实现一些简单算法和计算:序列相加: function [y,n] = sigadd(x1,n1,x2,n
10、2)% implements y(n) = x1(n)+x2(n)% -----------------------------% [y,n] = sigadd(x1,n1,x2,n2)% y = sum sequence over n, which includes n1 and n2% x1 = first sequence over n1% x2 = second sequence over n2 (n2 can be different from n1)%n = min(min(n1),min(n2)
11、):max(max(n1),max(n2)); % duration of y(n)y1 = zeros(1,length(n)); y2 = y1; % initializationy1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % x1 with duration of yy2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % x2 with duration of yy = y1+y2;
12、 % sequence addition 序列相乘: function [y,n] = sigmult(x1,n1,x2,n2)% implements y(n) = x1(n)*x2(n)% -----------------------------% [y,n] = sigmul