MATLAB通信仿真(一)

作者:SunnyFHY    发布于:

MATLAB通信仿真(一)

​ 此系列资料为我的matlab通信仿真学习笔记以及通院科协授课用资料

​ 内容参考蔡凡老师的公众号和CSDN博客

MATLAB基础知识

MATLAB概述

MATLAB简介

​ MATLAB(matrix&laboratory) 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

​ 它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB系统结构

  开发环境

  MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。它是一个集成的 用户工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器、MATLAB工作空间和在线帮助文档。

  数学函数

  MATLAB数学函数库包括了大量的计算算法。从基本算法如四则运算、三角函数,到复杂算法如矩阵求逆、快速傅里叶变换等。

  语言

  MATLAB语言是一种高级的基于矩阵/数组的语言,它有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用这种语言能够方便快捷建立起简单运行快的程序,也能建立复杂的程序。

  图形处理

  图形处理系统使得MATLAB能方便的图形化显示向量和矩阵,而且能对图形添加标注和打印。它包括强大的二维三维图形函数、图像处理和动画显示等函数。

  程序接口

  MATLAB应用程序接口(API)是一个使MATLAB语言能与C、Fortran等其它高级编程语言进行交互的函数库。该函数库的函数通过调用动态链接库(DLL)实现与MATLAB文件的数据交换,其主要功能包括在MATLAB中调用C和Fortran程序,以及在MATLAB与其它应用程序间建立客户、服务器关系。

MATLAB界面介绍

打开MATLAB可见如下主界面

1573254849370

主界面分为五个区域:工具栏、文件路径,当前文件夹,命令行窗口以及工作变量区域

工具栏

1573255424804

工具栏区域包括文件、变量、代码、simulink、坏境设置和资源六大部分

文件路径

文件路径是当前文件夹的地址,在该区域可以实现文件路径的切换

1573255646816

当前文件夹

当前文件夹是显示当前文件路径下所有文件的窗口,可以在此双击打开所需要的不同格式文件

1573255901880

命令行窗口

命令窗口是进行一系列命令输入的地方,当有指令输入并按下Enter键时,软件会自动执行该条指令,并显示出该命令的结果

1573256069978

工作变量区

工作变量区域是存放所执行程序中涉及到的所有变量值的空间,可以在该区域双击某变量查看其具体的变量表示情况

1573256148715

MATLAB的变量、运算符与表达式、常用命令

MATLAB中的变量

MATLAB并不要求事先对所使用的变量进行声明,也不需要指定变量类型,MATLAB语言会自动依据所赋予变量的值或对变量所进行的操作来识别变量的类型。在赋值过程中如果赋值变量已存在时,MATLAB语言将使用新值代替旧值,并以新值类型代替旧值类型。

在MATLAB语言中变量的命名应遵循如下规则

(1)变量名区分大小写,myvar和myVar表示两个不同的变量。

(2)变量名长度不超63位,第31个字符之后的字符将被MATLAB语言所忽略。

(3)变量名以字母开头,可以是字母、数字、下划线组成,但不能使用标点和空格。

与其他的程序设计语言相同,在MATLAB语言中也存在变量作用域的问题。在未加特殊说明的情况下,MATLAB语言将所识别的一切变量视为局部变量,即仅在其使用的M文件内有效。若要将变量定义为全局变量,则应当对变量进行说明,即在该变量前加关键字global。一般来说全局变量均用大写的英文字符表示。

MATLAB 中的运算符与表达式

1573258784375

MATLAB中的常用命令

  • clc 清空命令窗口
  • clear 清空工作区数据
  • clf 清除当前图形窗口内容
  • close all 关闭所有打开的图形窗口
  • who/whos 显示MATLAB工作空间中的变量/变量及信息
  • type<文件名.m> 显示指定m文件内容
  • help<命令名> 查询所列命令的帮助信息
  • exit/quit 关闭软件

MATLAB M文件知识

脚本式m文件1573261008198

脚本就是自动执行逐条命令的文件。如果编写了一个脚本式M文件,点击run就会自动一条一条命令顺序执行。和在命令窗写一条命令、执行一次的效果相同,过程中的变量都会被保存。

函数式m文件1573261054626

函数式m文件封装好特定功能的函数以供调用。此类m文件开头一般为如下格式,用以表明该m文件为函数式m文件。

1
2
3
4
5
function [输出参数形式] = 函数名 (函数形参表)
%注释说明语句段
%程序语句段

新建m文件的方法

1.直接在命令行窗口输入edit

即可新建一个Untitled m文件并直接编写

2.点击工具栏中的New Script新建脚本,或者点击New 选择New Script或者New Function

MATLAB绘图知识

二维图形绘制

常用基本函数

plot()

(1)plot(x,y)(其中,x和y分别用于存储x坐标和y坐标数据。通常,x和y为长度相同的向量。)

1
2
3
4
1 绘制一条折线。
x=[2.5, 3.5, 4, 5];
y=[1.5, 2.0, 1, 1.5];
plot(x, y)

(2)最简单的plot函数调用格式
plot(x) 当plot函数的参数x是复数向量时,则分别以该向量实部和虚部为横、纵坐标绘制出一条曲线。

1
2
3
4
x=[2.5,3.5,4,5];
y=[1.5,2,1,1.5];
cx=x+y*i; %也可写为cx=complex(x,y);
plot(cx)

(3)plot(x,y)函数参数的变化形式

  • 当x是向量,y是矩阵时
    1.如果矩阵y的列数等于x的长度,则以向量x为横坐标,以y的每个行向量为纵坐标绘制曲线,曲线的条数等于y的行数
    2.如果矩阵y的行数等于x的长度,则以向量x为横坐标,以y的每个列向量为纵坐标绘制曲线,曲线的条数等于y的列数

    1
    2
    3
    4
    2 绘制sin(x)、sin(2x)、sin(x/2)的函数曲线。
    x=linspace(0,2*pi,100); %创建一个0到2pi的含有100个元素的列向量
    y=[sin(x); sin(2*x); sin(0.5*x)]; %y为含有三个元素的行向量
    plot(x,y)
  • 当x,y为同型矩阵时
    以x、y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

1
2
3
4
5
t=0:0.01:2*pi;
t1=t'; %创建创建一个0到2pi的含有100个元素的列向量(每个元素之间间隔为0.01)
x=[t1, t1, t1];
y=[sin(t1), sin(2*t1), sin(0.5*t1)];
plot(x,y)

(4)含多个输入参数的plot函数

1
plot(x1,y1,x2,y2,...,xn,yn)

其中,每一向量对构成一组数据点的横、纵坐标,绘制一条曲线。

1
2
3
4
5
3 采用不同个数的数据点绘制正弦函数曲线,观察曲线形态。
t1=linspace(0, 2*pi, 10);
t2=linspace(0, 2*pi, 20);
t3=linspace(0, 2*pi, 100);
plot(t1, sin(t1), t2,sin(t2)+1, t3, sin(t3)+2)

(5)含选项的plot函数

plot函数可以增加一个参数用于指定曲线的线型、颜色和数据点标记。

1
2
3
4
plot(x,y,'s')
4
plot(x1, y1, 'k:', x2, y2, 'b--', x3, y3, 'rp')
线型 实线
虚线
—. 点划线
双划线
颜色 r 红色
g 绿色
b 蓝色
w 白色
k 黑色
数据点标记 * 星号
o 圆圈
s 方块
p 五角星
^ 朝上三角符号

坐标轴调整

axis函数:

1.基本函数:axis([xmin,xmax,ymin,ymax,zmin,zmax])` 用于控制坐标轴的选择范围

2.常用指令: axis equal:纵横坐标轴采用等长的刻度 axis square:产生正方形坐标系(默认为矩形) axis auto:使用默认设置 axis off:取消坐标轴 axis on:显示坐标轴 grid on/grid off/grid box on/box off/box :给坐标系加网络、边框 hold on/hold off/hold :图形保持

窗口分割

subplot(m,n,p),其中m和n指定将图形窗口分成m*n个绘图区,p指定当前活动区。 默认顺序从左到右,自上而下。

图形标识

在title()、xlabel()、ylabel()、zlabel()、text () 等函数中填入正确参数为绘制的图形添加标题、坐标轴标注 、文本标注。

1573269906162

1
2
3
4
5
6
7
8
9
title('图形标题','属性名','属性值')
text(x,y,'说明') xy为文本的坐标位置
xlabel('x轴说明')
ylabel('y轴说明')
z轴同理
5
title('y=cos{\omega}t','FontSize','24')
text(3, 0.28, '\leftarrow sin(x)')

坐标系选取

极坐标系

polar(theta, rho, ‘选项’)

其中,theta为极角,rho为极径,选项的内容与plot函数相同。

1
2
3
4
5
6
7
8
9
6 按极坐标方程ρ=1-sin t绘制心形曲线。
t = 0:pi/100:2*pi;
r = 1-sin(t);
subplot(1,2,1)
polar(t,r)
subplot(1,2,2)
t1 = t-pi/2;
r1 = 1-sin(t1);
polar(t,r1)

对数坐标

通信仿真中常用于绘制误码率曲线

1
2
3
4
5
6
7
8
9
10
11
12
semilogx(x1, y1, '选项1', x2, y2, '选项2', …)
semilogy(x1, y1, '选项1', x2, y2, '选项2', …)
loglog(x1, y1, '选项1', x2, y2,'选项2', …)
plotyy(x1,y1,'选项')双y轴坐标绘图
7
semilogy(ebno,th161_01_bit_err_ratio,'-*',ebno,th161_05_bit_err_ratio,'r-o',ebno,th161_075_bit_err_ratio,'k->');
xlabel('比特信噪比');
ylabel('误码率 ');

1573276068497

MATLAB流程控制

if switch for while语句结构和C语言基本一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
if 表达式1
执行语句1
elseif 表达式2
执行语句2
else
语句n
end
switch 表达式
case 常量表达式1
语句块1
case 常量表达式2
语句块2
case {常量表达式n,常量表达式n+1,…}
语句块n
otherwise
语句块n+1
end
while 表达式
循环体语句
end
for i=表达式
循环体语句
end

另外还有一种流控结构:试探结构

这种结构可自查错误并提前做好预备方案

1
2
3
4
5
try
尝试执行的语句块
catch 用于存储错误的变量
出错后执行语句块
end

用例详见matlab帮助文档中的try-catch页面

https://ww2.mathworks.cn/help/matlab/ref/try.html

MATLAB文件操作

matlab可对音频文件进行采样、也可对图像、视频文件进行处理,可以在这些文件基础上运用数字信号处理的知识以及进行算法研究。

以下给出基础文件操作函数,需要用时使用help<函数名>查询matlab帮助文档。

1573281160936

此处新版本可用audioread()函数读取多种格式的音频文件

1573281242703

1573281110649

1573281091952

1573281068402

format_list_numbered

(无)

  1. 1. MATLAB通信仿真(一)
    1. 1.1. MATLAB基础知识
      1. 1.1.1. MATLAB概述
        1. 1.1.1.1. MATLAB简介
        2. 1.1.1.2. MATLAB系统结构
        3. 1.1.1.3. MATLAB界面介绍
        4. 1.1.1.4. MATLAB的变量、运算符与表达式、常用命令
      2. 1.1.2. MATLAB M文件知识
      3. 1.1.3. MATLAB绘图知识
        1. 1.1.3.1. 二维图形绘制
      4. 1.1.4. MATLAB流程控制
      5. 1.1.5. MATLAB文件操作
vertical_align_top

Copyright © 2017 SunnyFHY

Powered by Hexo & Theme - Vateral