数字信号处理使用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.设计参数         首先,先明白几个概念。通带,阻带,过渡带,通带纹波和阻带纹波分别是什么?看下图,        范围称为通带,对于允许误差而言,这个范围,称为通带纹波。同样的,对于范围...
  • thnh169
  • thnh169
  • 2013年05月24日 14:25
  • 13149

Matlab--现代数字信号处理--白噪声时域分析

在随机过程课程上学习了功率谱,不幸的是我没听明白,更捉急的是接下来的现代数字信号处理要用到相关的概念,只能临时抱佛脚,先复习一下: 先介绍相关的概念: 1、白噪声:白噪声是功率谱密度为常数...

matlab数字信号处理常用命令

滤波器设计与分析:             滤波器 分析   abs 幅度 angle 相位 filternorm 计算以2或inf为范数的数字滤波器 ...

数字信号处理常用MATLAB函数

  • 2015年01月12日 14:34
  • 507KB
  • 下载

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

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

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

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

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

一、周期序列的MATLAB编程 1.产生包含x(n)的P行矩阵 2.利用结构( : )将P行连成一个长的行向量。 注:( : )仅对列起作用,所以必须要用矩阵转置符 '  程序 xtilde...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数字信号处理使用MATLAB子函数调用
举报原因:
原因补充:

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