数字信号处理使用MATLAB子函数调用

原创 2007年09月19日 23:03:00

数字信号处理使用MATLAB,使用MATLAB编制.M函数文件,MATLAB 是最优秀的科学计算工具(个人观点),使用MATLAB编程处理数字信号更容易,简单,但是有时会用到子函数的调用,使用MATLAB进行子函数调用可以,在MATLAB的路径如WORK 中添加.M函数文件,MATLAB可以自动调用,如果多个函数写在一个.M文件里,MATLAB会选取主函数,目前MATLAB版本更新很快,各种版本可能要求不同,有的是需要如下格式:

      function []=f1(..)

              .............

           function []=f2(....)

                ..............

                        function []=f3(......)

                                ...........

                                          end

                                  end

                           end

有的版本不需要用END 语句,如下:

function r=fs(x1,y1)
   global c1;
   c1=x1;
   r=x1+y1+f2(2,2)+f3(2,2);
 
   function m=f2(x2,y2)
   global c1;
   fprintf('%d',c1);
   m=x2+y2+c1;
  
        function p=f3(x3,y3)
        global c1;
     p=x3+y3+c1;

但要注意MATLAB执行到被调用函数的时候进入被调用函数空间,此时要把此函数所需要的变量声明为全局变量,或是在被调用的函数中再重新声明一次变量也可以.如下一个离散时间信号的移序相加和相乘的源程序:

function [y,m]=yijia1(x,n)
 n=-2:10;
 x=[1:7,6:-1:1];
 [x1,n1]=sigshift(x,n,5);
[x2,n2]=sigshift(x,n,-4);
[y,m]=sigadd(2*x1,n1,-3*x2,n2);
subplot(2,2,1);stem(m,y);
[x3,n3]=sigfold(x,n);[x3,n3]=sigshift(x3,n3,3);
[x4,n4]=sigshift(x,n,2);[x4,n4]=sigmult(x,n,x4,n4);
[z,k]=sigadd(x3,n3,x4,n4);
subplot(2,2,2);stem(k,z);
function [y,n]=sigfold(x,n)
n=-2:10;
x = [1:7,6:-1:1];
y=fliplr(x);n=-fliplr(n);
function [y,n]=sigshift(x,m,n0)
 n=-2:10;
 x=[1:7,6:-1:1];
n=m+n0;y=x;
function [y,n]=sigadd(x1,n1,x2,n2)
 n=-2:10;
 x=[1:7,6:-1:1];
n=min(min(n1),min(n2)):max(max(n1),max(n2));  
y1=zeros(1,length(n)); y2=y1;                
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;    
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;    y=y1+y2;
function [y,n] = sigmult(x1,n1,x2,n2)
n=-2:10;
 x=[1:7,6:-1:1];
n = min(min(n1),min(n2)):max(max(n1),max(n2));  
y1 = zeros(1,length(n)); y2 = y1;                
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;    
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;   
y = y1.*y2;

其中,信号的移动,反折,相加,相乘都编写成响应的函数来处理,减少了WORK路径下的杂乱不堪.

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

[数字信号处理]使用窗函数设计FIR滤波器

1.设计参数         首先,先明白几个概念。通带,阻带,过渡带,通带纹波和阻带纹波分别是什么?看下图,        范围称为通带,对于允许误差而言,这个范围,称为通带纹波。同样的,对于范围...

数字信号处理实验一(离散时间信号的MATLAB实现)

1.正弦序列 离散正弦序列的MATLAB表示与连续信号类似,只不过是用stem函数而不是用plot函数来画出序列的波形。下面就是正弦序列的MATLAB源程序。 %正弦序列实现程序 k=0:39; ...
  • YZ_51
  • YZ_51
  • 2017-03-20 11:14
  • 714

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

数字信号处理(MATLAB版)学习笔记1--离散时间信号与系统

一、周期序列的MATLAB编程 1.产生包含x(n)的P行矩阵 2.利用结构( : )将P行连成一个长的行向量。 注:( : )仅对列起作用,所以必须要用矩阵转置符 '  程序 xtilde...

数字信号处理实践——基于matlab的音频信号分析即处理

基于matlab的音频信号分析即处理     一直很多人都困惑,大学里学了数字信号能干嘛,很少又实践动手的机会(这都是看个人主动性的,从来不缺锻炼的机会,机会不会摆在你面前吧!)。很多人也就是做做...

相关函数在数字信号处理中的应用

根据相关函数的几条基本性质,简要分析了相关函数在数字信号处理当中的一些应用。由分析可知,相关函数方法简洁,在数字信号处理中,可以方便地对信号的周期性进行检测,确定未知参数的线性系统的频域响应,检测噪声...

数字信号处理与音频处理(使用Audition)

前一阵子因为考博学习需要,看了《数字信号处理》,之前一直不清除这门课的理论在哪里应用比较广泛。这次正巧用Audition处理了一段音频,猛然发现《数字信号处理》这门课还是非常有用的,在音频处理领域至少...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)