Matlab仿真技术

乔世坤

目录

  • 1 实验一Matlab基础与入门
    • 1.1 Matlab简介
    • 1.2 变量与数值
    • 1.3 矩阵运算
    • 1.4 数组运算
    • 1.5 常用数学函数
    • 1.6 Matlab帮助系统
    • 1.7 实验内容
    • 1.8 思考题
  • 2 实验二 Matlab程序设计基础
    • 2.1 M文件
    • 2.2 Matlab程序流控制
    • 2.3 实验内容
    • 2.4 思考题
  • 3 实验三Matlab图形绘制
    • 3.1 二维曲线的绘制
    • 3.2 三维曲线的绘制
    • 3.3 实验内容
    • 3.4 思考题
  • 4 MATLAB数值计算与符号运算
    • 4.1 线性代数中的应用
    • 4.2 多项式运算
    • 4.3 数据分析与统计
    • 4.4 功能函数
    • 4.5 常微分方程的数值求值
    • 4.6 符号运算
    • 4.7 Matlab数值计算部分实验题
    • 4.8 Matlab符号运算部分实验题
    • 4.9 Matlab程序设计部分实验题
    • 4.10 思考题
  • 5 Simulink仿真基础
    • 5.1 Simulink概述
    • 5.2 Simulink建模与仿真
    • 5.3 子系统及其封装技术
    • 5.4 SIMULINK模块库简介
    • 5.5 Simulink仿真基础实验题
    • 5.6 Simulink仿真应用实验题
    • 5.7 思考题
  • 6 Matlab在电路分析中的应用
    • 6.1 Matlab在电路中的仿真应用
    • 6.2 数字逻辑电路仿真
    • 6.3 实验内容
    • 6.4 思考题
  • 7 MATLAB在信号与系统中的应用
    • 7.1 连续时间信号及其表示
    • 7.2 线性时不变系统
    • 7.3 线性时不变系统的时域分析
    • 7.4 线性时不变系统的频域分析
    • 7.5 实验内容
    • 7.6 思考题
  • 8 Matlab在数字信号处理中的应用
    • 8.1 信号的表示与信号的基本运算
    • 8.2 实验内容
    • 8.3 思考题
  • 9 MATLAB在通信原理中的应用
    • 9.1 脉冲编码调制仿真
    • 9.2 实验内容
实验内容

1已知f=[-2 -1.9 -1.5 0.123 1.09 2]编写量化函数进行量化记录实验结果。

参考程序如下

function h=junyun(f,V,L)

% 量化函数f是输入信号序列V是量化电平最大值L是量化电平数

n=length(f);                                   %n是输入信号序列长度

t=2*V/L;                                      %级间间隔电压值

p=zeros(1,L+1);

for i=1:L+1

   p(i)=-V+(i-1)*t;                            %产生量化输出电平

end

for i=1:n

   flag=0;                                      %设立标志,“flag=0表示f(i)还未量化

    if f(i)>=V

       h(i)=V;   flag=1;                      

    end

    iff(i)<-V

           h(i)=-V; flag=1;

    end

    forj=1:L+1                                 %当前输入信号f依次与p(j)输出电平做比较

           if (flag==0)

               if ( f(i)<=p(j))

                   h(i)=p(j);  flag=1;

               end;

           end;

       end;

end;

2已知模拟信源 要求利用quantizlloyds函数或自编的量化函数实现量化量化区间小于等于0.1要求输出量化结果。

3.已知A律对数压缩公式,编写函数实现A律对数压缩,并编写程序调用此函数输出压缩系数A分别等于11087.65时的压缩特性曲线

参考函数程序如下

function y=apcm(x,a)

%本函数实现将输入序列x进行参数为a的对数A律压缩

%x为一个序列,值01之间;a为正实数大于1

t=1/a;

for i=1:length(x)

   if (x(i)>=0)

       if(x(i)<=t)

          y(i)=(a*x(i))/(1+log(a));

       else

           y(i)=(1+log(a*x(i)))/(1+log(a));

       end

else

      if(x(i)>=-t)

          y(i)=-(a*-x(i))/(1+log(a));

       else

          y(i)=-(1+log(a*-x(i)))/(1+log(a));

       end

   end

end

4编写自然数线性编码函数。

参考自然数编码函数如下

function co=exadc(len,vi)

% len码长vi输入的自然数。

v=vi;

for n=1:len

       r=rem(v,2);

       v=(v-r)/2;

   code(n)=r;

end

co=fliplr(code);

5编写整数编码函数,要求:结果中首位为符号位1表示正0表示负。

6. 编写实现均匀PCM量化编码的函数。要求:简单进行关键代码功能分析,并编写程序调用函数实现的量化编码,并记录仿真结果。

function [sqnr,a_quan,code]=upcm(a,n)

% a输入信号序列,变量n为量化级数

amax=max(abs(a));

a_quan=a/amax;

b_quan=a_quan;

d=2/n;

q=d.*[0:n-1];

q=q-((n-1)/2)*d;

for i=1:n

    a_quan(find((q(i)-d/2<=a_quan)&(a_quan<=q(i)+d/2)))

=q(i).*ones(1,length(find((q(i)-d/2<=a_quan)&(a_quan<=q(i)+d/2))));

    b_quan(find(a_quan==q(i)))=

                 (i-1).*ones(1,length(find(a_quan==q(i))));

end

a_quan=a_quan*amax;

nu=ceil(log(n))

code=zeros(length(a),nu);

for i=1:length(a)

    forj=nu:-1:0

        if(fix(b_quan(i)/(2^j))==1)

           code(i,(nu-j))=1;

           b_quan(i)=b_quan(i)-2^j;

        end

    end

end

sqnr=20*log10(norm(a)./norm(a-a_quan))

7. Simulink中,搭建语音信号的PCM调制与解调系统模型,如图9-31所示,并仿真实现。

9-31 PCM仿真模型

提示:(1Pulse Generator模块参数中,周期设为1/8000;(2)取自Communications System Toolbox库中的A-Law CompressorA-Law Expander模块参数压缩系数设为87.6;(3)取自DSP System Toolbox库中的Uniform EncoderUniform decoder模块参数bits都设为8