数字信号处理使用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路径下的杂乱不堪.

 

 

matlab 信号平滑处理方法

smooth函数、imfilter滤波、直接用conv2,最简单的低通比如1/9*ones(3) 详细: 1.smooth: %-------------------------...
  • han____shuai
  • han____shuai
  • 2016年02月24日 00:56
  • 3375

MATLAB数字信号处理

产生方波 clear t=0:0.01:10; subplot(4,1,1) f1=square(t);                       %  产生周期为2pi的方波信号 plo...
  • gwh111
  • gwh111
  • 2013年03月13日 10:35
  • 7980

数字信号处理公式变程序(五)——仿matlab的spectrogram函数(STFT)

上几篇文章写了DFT/FFT、插值、压缩、滤波器等数字信号处理中的算法,今天写一下STFT算法(其实我刚开始是想搞小波变换wavelet的,搞了个大概就转成STFT了)的介绍。另外,我还模仿安捷伦示波...
  • shengzhadon
  • shengzhadon
  • 2015年07月09日 08:35
  • 9609

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

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

数字信号处理常用MATLAB函数

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

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

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

matlab数字信号处理常用命令

滤波器设计与分析:             滤波器 分析   abs 幅度 angle 相位 filternorm 计算以2或inf为范数的数字滤波器 ...
  • xuyangcao123
  • xuyangcao123
  • 2015年05月06日 15:40
  • 1178

Matlab关于数字信号处理的常用函数集锦

  • 2012年12月24日 22:32
  • 2.72MB
  • 下载

MATLAB7数字信号处理常用函数列表.doc

  • 2012年04月02日 11:22
  • 206KB
  • 下载

数字信号处理中常用的matlab工具箱函数简介.pdf

  • 2011年09月10日 09:31
  • 234KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数字信号处理使用MATLAB子函数调用
举报原因:
原因补充:

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