MATLAB通信系统建模与仿真

第一部分:MATLAB基础与通信系统仿真

1.变量及常量
MATLAB内部有很多预定义的变量和常量,其表示了特殊的含义。

(1) 变量ans:指当前未定义的变量名的计算结果,反馈到command window中。

(2) 常数eps:表示浮点相对精度,其值是从1.0到下一个最大浮点数之间的差值。该变量常作为一些

MATLAB函数计算的相对浮点精度,按IEEE标准,eps=2-52,近似为2.2204e-016。

(3) 常数Inf:表示无穷大。当输入或者计算中有出现除以0时产生Inf。

(4) 常数pi:表示圆周率π。

(5) 虚数单位i,j:表示复数虚部单位,i^2=-1或者j^2=-1。

(6) NaN:表示不定型值,由0/0运算产生。

(7) nargin:函数输入的变量个数。

(8) nargout:函数输出的变量个数。

  • 注意:
    MATLAB变量名以字母开头,后接字母、数字和下划线的字符序列,最多63个字符,区分字符的大小写。
    局部变量是指每个函数体内部自己定义的变量,不能从其他函数和MATLAB工作空间访问的变量。
    全局变量是指用关键词”global”声明的变量,应该尽量大写以表示它的含义。如果要在工作空间和几个函数内都能访问一个全局变量,那么就必须在工作空间和这几个函数内都声明该变量是全局变量。

2.常用特殊矩阵
MATLAB具有强大的矩阵运算和数据处理能力,但是矩阵的处理都必须满足代数规则。

(1) eye(m,n)或eye(m)用于产生m*n或m*m的单位矩阵。

(2) zeros(m,n)或zeros(m)用于产生m*n或m*m的零矩阵。

(3) ones(m,n)或ones(m)用于产生m*n或m*m的全元素为1的矩阵。

(4) randn(m,n)或randn(m)用于产生m*n或m*m的随机矩阵。矩阵每一行,每一列元素都服从于均值为0,方差为1的高斯分布。

(5) rand(m,n)或rand(m)用于产生m*n或m*m的随机矩阵。矩阵每一行,每一列元素都服从[0,1]上的均匀分布。

3.MATLAB绘图函数
MATLAB具有非常强的图形处理能力,提供了大量的二维,三维图形函数。

(1) plot函数:

plot(x,y),其中x和y为坐标矢量。函数功能:以矢量x、y为轴,绘制曲线。

plot(x,y1,x,y2,x,y3,…)形式,表示以公共矢量x为x轴,分别以y1,y2,y3,…为y轴,在同一幅图内绘制出多条曲线。

plot(x,y1,’cs’,…),表示可以绘制不同颜色的曲线,其中c表示颜色,s表示线形。

(2) subplot函数:

subplot(m,n,p)命令将当前图形窗口分成m*n个绘图区域,即每行n个,共m行,区号按行优先编号,且选

定第p个为当前绘图区。

(3) loglog函数:

loglog(x,y),双对数坐标,横坐标和纵坐标都采用下x,y的对数。

semilogx(x,y),单对数坐标,横坐标采用x的对数。

semilogy(x,y),单对数坐标,纵坐标采用y的对数。

(4) title函数

title(‘sin(x)曲线’) 表示所绘制的图形的名称为”sin(x)曲线”,位于图形正上方。

(5) xlabel/ylabel函数

xlabel(‘时间’)/ylabel(‘幅度’)分别用来说明横/纵坐标为”时间”和”幅度”,分别标注在x轴和y轴上。

(6) text函数

text(x(100),y(200),’sin(x)曲线’),用于在指定位置添加标注,其中x(100)表示在矢量x的第100个值,y(200)

表示在矢量y的第200个值,二者交点出添加标注”sin(x)曲线”。

(7) grid on函数

grid on,表示显示坐标网格。

grid off,表示不显示坐标网格。

(8) legend函数

legend(‘sin(x)’,’cos(x)’),用于添加图例说明,表示分别给两个函数图像添加图例说明”sin(x)”和”cos(x)”。

(9) axis函数

axis([0 2*pi -1 1]),用于限定图形显示范围,即限定x∈[0,2π],y∈[-1,1],只显示这个范围内的图形。

(10) hold函数

hold on,表示设置图形保持状态,即可以在同一个窗口里绘制多个曲线。

hold off,表示关闭图形保持。

4.MATLAB程序结构
MATLAB程序结构与其他高级语言是一致的,可以分为顺序结构、循环结构、分支结构。

(1) 顺序结构

顺序结构在此就不再说明了。

(2) 循环结构

1) for-end循环

for     i=循环初始值:循环步长:循环结束值

        可执行语句

end

2) while-end循环

while  表达式

      循环体语句

end

(3) 分支结构

分支结构的语句有if语句和switch语句。

1) if语句

格式1

if 条件

   可执行语句组

end

格式2

if 条件

   可执行语句组1

 else

   可执行语句组2

end

格式3

if 条件1

   可执行语句组1

 elseif 条件2  

   可执行语句组2
   .
   .
   .
 elseif 条件m  

   可执行语句组m

 else

   可执行语句组m+1

end

2) switch语句

switch 表达式

 case1

   可执行语句组1

 case2  

   可执行语句组2
   .
   .
   .
 case 值m  

   可执行语句组m

 otherwise

   可执行语句组m+1

end
  • 注意:
    break语句与continue语句,需要中断循环可以使用break语句和continue语句。其中break语句是终止循环,执行循环体后的语句。用于跳出for/while的循环体。而continue语句则是终止本次循环,本次循环中的continue语句后面的循环语句不再执行,而是执行新的循环。

5.文件操作
包括文件的打开与关闭、文件的读/写操作、文件定位

(1) M文件

M文件有两种形式:脚本文件(Script File)和函数文件(Function File)。这两种文件的扩展名,均为”.m”。

脚本文件(Script File):类似于编写C/C++程序,可以在一个文件里编写完整的程序代码,命名保存。后续可以继续修改,完善程序。

函数文件(Function File):用于编写一些可以实现某些特定功能的程序包。就像一个黑箱,输入一些数据,经过特定的处理加工后输出结果。一般形式如下:

function  输出形参表 = 函数名(输入形参表)
  • 注意:
    函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。M文件的文件名必须是”函数名.m”。

(2) 数据文件

MATLAB提供了对数据文件建立、打开、读、写及关闭等一系列函数,数据文件一般存放在磁盘等介质上,用文件名标识,系统对文件名没有特殊要求。

1)fopen函数

fid=fopen(filename,permission)

其中,fid是fopen函数打开的文件句柄,在对文件经行其他操作时会用到它。filename为文件名,permission为文件格式,具体

文件格式如下:

文件格式说明:

选项 说明
‘r’ 打开文件,读数据,文件必须存在
‘w’ 打开文件,写数据,若文件不存在,系统会自动建立
‘a’ 打开文件,在文件末尾添加数据
‘r+’ 打开文件,读和写数据,文件必须存在
‘w+’ 打开文件,供读与写数据
‘a+’ 打开文件,供读与添加数据
‘W’ 打开文件供写数据用,无自动刷新功能
‘A’ 打开文件供添加数据用,无自动刷新功能
fid=fopen('test.dat','r')

上述打开格式均为二进制格式,如果想用ASCII文本格式,则必须在格式字符串中加上字符t,例如’rt’表示以ASCII格式打开供读操作的数据文件。

2)fclose函数

rt=fclose(fid)

其中,fid是用fopen打开的文件句柄。rt表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。

3)fread函数

[A,count]=fread(fid,size,precision)

fread用来读取二进制文件。如果A为数据矩阵,count返回所读取的数据元素个数。size为可选项,若不选用则读取整个文件内容,若选用则它的值可以为下列值:

size选项说明:

选项 说明
n 读取n个元素到一个列向量
inf 读取整个文件
[m,n] 读取数据到m*m的矩阵中,数据按列存放

4)fwrite函数

count=fwrite(fid,A,precision)

fwrite函数以二进制格式向数据文件写数据。

5)fscanf函数

[A,count]=fscanf(fid,format,size)

fscanf用来读取ASCII文件。如果A为数据矩阵,count返回所读取的数据元素个数。format用以控制读取的数据格式,由%加上格式符组成。

6)fprintf函数

count=fprintf(fid,format,A)

其中,A为要写入文件的数据矩阵,先按format格式化数据矩阵A,后写入进入fid所指定的文件。

6)fseek函数

status=fseek(fid,offset,origin)

fseek函数定位文件位置指针。fid为文件句柄,offset表示位置相对移动的字节数,若为正整数表示向文件尾方向移动,若为负整数表示向文件头方向移动,origin表示位置指针移动的参照位置,它的取值有3种可能如下:

origin选项说明:

选项 说明
‘cof’ 文件当前位置
‘bof’ 文件开始位置
‘eof’ 文件结束位置

7)ftell函数

position=ftell(fid)

ftell函数返回文件指针当前位置。返回值为从文件开始到文件指针当前位置的字节数,不包括当前位。如果返回值为-1表示获取文件当前位置失败。

你可能感兴趣的:(matlab)