当前位置:文档之家› 第2讲 matlab语言

第2讲 matlab语言

第2讲 matlab语言
第2讲 matlab语言

3. MATLAB的安装与启动

?(1) MATLAB的安装

把安装盘放入CD‐ROM,一般会自动运行安装程序,如果不运行,可以进入光盘双击setup.exe文件,初始化完成,会出现对话框:

单击Next按钮,出现一个对话框,分别输入名字、单位和安装序列号(sn.txt)。输入后,单击Next,出现是否接受协议的对话框。

在是否接受协议的对话框中单击yes和Next,出现安装形式对话框,第一项是典型安装,一般选择默认。第二项是定制安装,可以选择产品和文件。

?选择典型安装后,需选择安装路径,一般默认为c

盘MATLAB7或MATLAB6p5。如果选择定制安装后,单击

Next,出现选择安装路径和选择产品和文件的对话框,

在选择产品和文件部分可选择用户需要安装的MATLAB

和工具箱。

Dock

desktop

1.命令窗口(command window)

?命令窗口是命令行语句和命令文件执行的主要窗口。

?在命令窗口中直接输入命令或MATLAB函数,系统自动

反馈结果。

2. M文件编辑/调试器

3.工作空间浏览器

工作空间窗口是MATLAB的一个变量管理中心,可以

显示变量的名称、尺寸、字节和类别等信息,同时

用不同的图标表示矩阵、字符数组、元胞数组、构

架数组等变量类型。

5.图形窗

三种打开方式

?1)在主窗口上依次选择File→New→Figure或Open file…操作时,选择打开图形文件

?2)在命令窗口输入figure命令

?3)执行结果为图形的语句,plot

?>> peaks;

?z = 3*(1‐x).^2.*exp(‐(x.^2) ‐(y+1).^2) ... ?‐10*(x/5 ‐x.^3 ‐y.^5).*exp(‐x.^2‐y.^2) ... ?‐1/3*exp(‐(x+1).^2 ‐y.^2)

?>>6.帮助导航/浏览器

选择view菜单中的Help菜单项

选择Help菜单中的MATLAB Help菜单项可以打开帮助浏览器。

>> pi

ans =

3.1416 >> eps

ans =

2.2204e‐016 >> inf

ans =

Inf

>>realmin ans =

2.2251e‐308 >> realmax ans =

1.7977e+308

第2讲 matlab的数值分析

第二讲MATLAB的数值分析 2-1矩阵运算与数组运算 矩阵运算和数组运算是MATLAB数值运算的两大类型,矩阵运算是按矩阵的运算规则进行的,而数组运算则是按数组元素逐一进行的。因此,在进行某些运算(如乘、除)时,矩阵运算和数组运算有着较大的差别。在MATLAB中,可以对矩阵进行数组运算,这时是把矩阵视为数组,运算按数组的运算规则。也可以对数组进行矩阵运算,这时是把数组视为矩阵,运算按矩阵的运算规则进行。 1、矩阵加减与数组加减 矩阵加减与数组加减运算效果一致,运算符也相同,可分为两种情况: (1)若参与运算的两矩阵(数组)的维数相同,则加减运算的结果是将两矩阵的对应元素进行加减,如 A=[1 1 1;2 2 2;3 3 3]; B=A; A+B ans= 2 2 2 4 4 4 6 6 6 (2)若参与运算的两矩阵之一为标量(1*1的矩阵),则加减运算的结果是将矩阵(数组)的每一元素与该标量逐一相加减,如 A=[1 1 1;2 2 2;3 3 3]; A+2 ans= 3 3 3 4 4 4 5 5 5 2、矩阵乘与数组乘 (1)矩阵乘 矩阵乘与数组乘有着较大差别,运算结果也完全不同。矩阵乘的运算符为“*”,运算是按矩阵的乘法规则进行,即参与乘运算的两矩阵的内维必须相同。设A、B为参与乘运算的 =A m×k B k×n。因此,参与运两矩阵,C为A和B的矩阵乘的结果,则它们必须满足关系C m ×n 算的两矩阵的顺序不能任意调换,因为A*B和B*A计算结果很可能是完全不一样的。如:A=[1 1 1;2 2 2;3 3 3]; B=A;

A*B ans= 6 6 6 12 12 12 18 18 18 F=ones(1,3); G=ones(3,1); F*G ans 3 G*F ans= 1 1 1 1 1 1 1 1 1 (2)数组乘 数组乘的运算符为“.*”,运算符中的点号不能遗漏,也不能随意加空格符。参加数组乘运算的两数组的大小必须相等(即同维数组)。数组乘的结果是将两同维数组(矩阵)的对应元素逐一相乘,因此,A.*B和B.*A的计算结果是完全相同的,如: A=[1 1 1 1 1;2 2 2 2 2;3 3 3 3 3]; B=A; A.*B ans= 1 1 1 1 1 4 4 4 4 4 9 9 9 9 9 B.*A ans= 1 1 1 1 1 4 4 4 4 4 9 9 9 9 9 由于矩阵运算和数组运算的差异,能进行数组乘运算的两矩阵,不一定能进行矩阵乘运算。如 A=ones(1,3); B=A; A.*B ans= 1 1 1 A*A ???Error using= =>

Matlab语言基础

一、Matlab的变量与常量 Matlab中变量和常量存储都是相应的数据。 数据类型:基本类型、构造类型、符号对象 基本类型:数字型、字符串型 数字型:整型、浮点型 整形:无符号、有符号(int8、int16、int32、int64 1位、2位、4位、8位) 浮点型:单精度(32位)、双精度(64位) 基本类型:数组类型(常见)、细胞类型、结构类型、类类型 符号对象(比较少见) 变量:在运算过程中其数值可以改变的量; 常量:在运算过程中其数值不改变的量。 变量命名规则: 变数名称是由一个字母开头,其后可以有任意数量的字母、数字或下划线。在变量命名时尽量使用小写字母,名字要有实在的意义,不要和系统保留的关键字(常量)和函数名相同的名字,容易出错。 MATLAB是区分大小写的,变量名可以是任意长度。 Matlab语言是一种弱类型语言,C语言是强类型语言,变量在复制之前要对它的类型进行严格的申明,不同就会出错,而matlab不需要事先申明。 变量初始化: 1、采用赋值语句初始化变量; 2、用input函数从键盘输入初始化变量,如下:

3、matlab已经定义好了的一些常量: I、j虚数;Inf无穷大;NaN不定式;pi圆周率;ans特殊的变量。 二、matlab的基本数据结构 标量、向量、数组、矩阵的概念:标量、向量、数组本质上是特殊的矩阵形式;matlab 常用的是二维矩阵;标量1*1的矩阵;向量可以看成是1行或者1列的矩阵;向量是数学中的说法,数组是matlab语言中的说法,但向量和数组在这里指的是同一种数据结构,可以互用。 手动生成矩阵: 行矩阵:a = [1 2 3] 列矩阵:b = [1 2 3]’或 b = [1;2;3] 2*2矩阵:c = [1 2;3 4] 使用内置函数生成矩阵:常用的有o nes,eye,zeros,size,length.

(完整版)第二讲Matlab编程与作图

第二讲Matlab编程与作图 第一部分Matlab程序设计初步 Matlab除了指令行操作的直接交互外,作为一种高级应用软件还提供了自己的编程语言。通过编写Matlab程序,可以更加方便地调用Matlab提供的各种功能强大的函数库,使得程序能完成复杂的运算处理大量的数值数据。 1、M文件简介 Matlab提供了丰富的编程语言,使得用户可以将一连串的命令写入文件,然后使用简单的函数来执行这些命令。文件被保存为文本文件,后缀为.m,比如说dblquad.m,因此Matlab的程序通常被称为M 文件。 M文件是一个文本文件,可以使用各种文本编辑器对它进行编辑和修改,比如Windows操作系统自带的记事本,也可以用Matlab 内建的M文件编辑器。 M文件分为两类,一类称为脚本(Scripts),类似于批处理文件,相当于将在Matlab命令窗口中执行的一系列指令放在一个文件中,当在命令窗口调用该文件名时,则按顺序执行其中的命令集。 例2.1:编写求10!的程序。 n=10;s=1; for k=1:n s=s*k; end

disp(s) %disp:MATLAB中的命令,表示只显示结果,不显示变量名。 另一类M文件称为函数(Function),它可以接受输入变量,并将运算结果送至输出变量,类似于数学中的函数y=f(x)。 函数M文件的基本结构: function f=fact(n) 函数定义行 %Compute a factorial value. 计算阶乘的值 %FACT(N) returns the factorial of N, 帮助文档 %usually denoted by N! %Put simply,FACT(N) is PROD(1:N), 注释 f=prod(1:n); 函数体 例2.2:编写分段函数 21 () 1 -1<1 321 x x f x x x x ?> ? =≤ ? ?+≤- ? %myfun1.m function y=myfun1(x) y=(x.^2).*(x>1)+(x>-1& x<=1)+(3+2*x).*(x<=-1); 注意:1.函数名与变量名的命名法则相同,要求以字母开头,后接字母或下划线;2.函数名与保存的文件名最好一致。 2、控制流 所有的计算机编程语言都提供了控制程序流执行程序的语法,Matlab也不例外。所有的控制流语法都以end 结尾。

(完整版)matlab基本语句

第2章M ATLAB程序设计 MATLAB语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。 由于 MATLAB开始是用FORTRAN语言编写、后来用 C语言重写的,故其既有FORTRAN的特征,又在许多语言规则方面与C语言相同。 2.1 顺序结构语句 在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。

2.1.1 表达式语句 格式: 表达式,%显示表达式值 表达式;%不显示表达式值 表达式%显示表达式值 如: x + y, sin(x); –5 最后的表达式值暂保存在变量ans中。 2.1.2 赋值语句 格式: v =表达式,%结果送v并显示v v =表达式;%结果送v不显示v v =表达式%结果送v并显示v 2.1.3 空语句 格式: , ; 2.1.4 输入语句

1、input语句(实际上是函数) 格式1: input(提示字符串) 功能: 显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式 格式2: input(提示字符串,'s') 功能: 显示提示字符串,并把输入视为字符串 2、yesinput语句 格式: yesinput(提示字符串,缺省值,值范围) 功能: 显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B并等待用户重新输入。 如: t=yesinput('指定线的颜色',… 'red','red|blue|green') 运行结果如下: 指定线的颜色(red):yellow %不在值内

matlab基本语句

matlab 基本语句 1、循环语句for for i=s1:s3:s2 循环语句组 end 解释:首先给i赋值s1;然后,判断i就是否介于s1与s2之间;如果就是,则执行循环语句组,i=i+s3(否则,退出循环、);执行完毕后,继续下一次循环。 例:求1到100的与,可以编程如下: sum=0 for i=1:1:100 sum=sum+i end 这个程序也可以用while语句编程。 注:for循环可以通过break语句结束整个for循环、 2、循环语句while 例:sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; end 3、if语句 if(条件) 语句 end if(条件) 语句 else 语句 end if(条件) 语句 elseif 语句 end 4、关系表达式: =,>,<,>=,<=,==(精确等于)

5、逻辑表达式:|(或),&(且) 6、[n,m]=size(A)(A为矩阵) 这样可以得到矩阵A的行与列数 n=length(A),可以得到向量A的分量个数;如果就是矩阵,则得到矩阵A的行与列数这两个数字中的最大值。 7、!后面接Dos命令可以调用运行一个dos程序。 8、常见函数: poly():为求矩阵的特征多项式的函数,得到的为特征多项式的各个系数。如 a=[1,0,0;0,2,0;0,0,3],则poly(a)=1 -6 11 -6。相当于poly(a)=1入^3+(-6)入^2+11入+(-6)。 compan():可以求矩阵的伴随矩阵、 sin()等三角函数。 MATLAB在数学建模中的应用(3) 一、程序设计概述 MATLAB所提供的程序设计语言就是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C++语言要高得多。 MATLAB编程环境有很多。常用的有: 1、命令窗口 2、word窗口 3、M-文件编辑器,这就是最好的编程环境。 M-文件的扩展名为“、m”。M-文件的格式分为两种: ①l M-脚本文件,也可称为“命令文件”。 ②M-函数文件。这就是matlab程序设计的主流。l 保存后的文件可以随时调用。 二、MATLAB程序结构 按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构就是:顺序结构、选择结构与循环结构。其中顺序结构就是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反复执行某些程序段落,可以使用循环结构。 1 顺序结构 顺序结构就是由两个程序模块串接构成。一个程序模块就是完成一项独立功能的逻辑单元,它可以就是一段程序、一个函数,或者就是一条语句。 瞧图可知,在顺序结构中,这两个程序模块就是顺序执行的,即先执行<程序模块1>,然后执行<程序模块2>。 实现顺序结构的方法非常简单,只需将程序语句顺序排列即可。 2 选择结构 在MATLAB中,选择结构可由两种语句来实现。

第二讲_MATLAB图形处理

常用的数学函数 acos(x)———反余弦函数cos(x)———余弦函数 acot(x)———反余切函数cot(x)———余切函数 asin(x)———反正弦函数sin(x)———正弦函数 atan(x)———反正切函数tan(x)———正切函数 exp(x)———自然指数函数pow2(x)———以2为底的指数函数 log(x)———自然对数函数sqrt(x)———根号函数 log2(x)———以2为底的对数函数floor(x)———向下取整数 log10(x)———以10为底的对数函数ceil(x)———向上取整数 mod(x)———x对y的模round(x)———四舍五入函数 rem(x,y)———x除以y的余数sign(x)———符号函数 3.2.7选择输出格式 MA TLAB中的所有计算都是以双精度方式完成的,但是显示输出可以是具有4个小数位的定点输出。例如,对于向量x = [1/3 0.00002] MA TLAB有下列输出:x= 0.3333 0.0000 如果在矩阵中至少有一个元素不是严格的整数,则有4种可能的输出格式。显示的输出量可以利用下列命令加以控制: format short format long format short e format long e 一旦调用了某种格式,则这种被选用的格式将保持,直到对格式进行了改变为止。 format short和format long是经常采用的格式。一旦调用了MATLAB,即使没有输入格式命令,MATLAB 也将以format short格式显示数值结果。如果矩阵或向量的所有元素都是严格的整数,则format short和format long的结果是相同的。 MA TLAB操作桌面的file菜单中打开preferences窗口,选择命令窗口界面,就可以方便地进行格式选择。注:复数和复数矩阵(Complex and complex matrix) 复数用特殊字符i或j 表示。i=sqrt(-1), 其值在工作空间显示为0+1.0000i. 例:输入 z=3+4i 或z=3+4j 结果一样。 MA TLAB 中复数有下面的语句生成办法: z=a+b*i 或z=r*exp(i*θ)其中r为复数的模,θ为复数辐角的弧度数。 复数的两种输入方法:

matlab基本语句(可编辑修改word版)

第2章MATLAB 程序设计 MATLAB 语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。 由于 MATLAB 开始是用 FORTRAN 语言编写、后来用C 语言重写的,故其既有 FORTRAN 的特征,又在许多语言规则方面与 C 语言相同。 2.1顺序结构语句 在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。

2.1.1表达式语句 格式: 表达式,%显示表达式值 表达式;%不显示表达式值 表达式%显示表达式值 如: x+y, s i n(x); –5 最后的表达式值暂保存在变量 ans 中。 2.1.2赋值语句 格式: v=表达式,%结果送 v 并显示 v v=表达式;%结果送 v 不显示 v v=表达式%结果送 v 并显示 v 2.1.3空语句 格式: , ; 2.1.4输入语句 1、i n p u t语句(实际上是函数) 格式 1: i n p u t(提示字符串)

功能: 显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式 格式 2:i n p u t(提示字 符串,'s')功能: 显示提示字符串,并把输入视为字符串 2、y e s i n p u t语句 格式: y e s i n p u t(提示字符串,缺省值,值范围) 功能: 显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B 并等待用户重新输入。 如: t=y e s i n p u t('指定线的颜色',… 'r e d','r e d|b l u e|g r ee n') 运行结果如下: 指定线的颜色(red):yellow %不在值内 指定线的颜色(red):blue %重输 t = b l u e x=y e s i n p u t('输入元素个数',10,[1,20])

MatLab2第二讲MatLab图形绘制功能

MatLab & 数学建模 第二讲MatLab图形绘制功能一、二维平面图形 基本绘图函数 hold on 命令用于在已画好的图形上添加新的图形

plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y座标。下例可画出一条正弦曲线: x=0:0.001:10; % 0到10的1000个点的x座标 y=sin(x); % 对应的y座标 plot(x,y); % 绘图 Y=sin(10*x); plot(x,y,'r:',x,Y,'b') % 同时画两个函数

?若要改变颜色,在座标对後面加上相关字串即可: x=0:0.01:10; plot(x,sin(x),'r') 若要同时改变颜色及图线型态(Line style),也是在坐标对後面加上相关字串即可: plot(x,sin(x),'r*')

用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围 axis([0,6,-1.5,1]) MATLAB也可对图形加上各种注解与处理: xlabel('x轴'); % x轴注解 ylabel('y轴'); % y轴注解 title('余弦函数'); % 图形标题 legend('y = cos(x)'); % 图形注解 gtext('y = cos(x)'); % 图形注解 ,用鼠标定位注解位置 grid on; % 显示格线 fplot的指令可以用来自动的画一个已定义的函数分布图,而无须产生绘图所须 要的一组数据做为变数。其语法为fplot('fun',[xmin xmax ymin ymax]),其中fun 为一已定义的函数名称,例如sin, cos等等;而xmin, xmax, ymin, ymax则是设定绘图横轴及纵轴的下限及上限。

Matlab语言基本知识.doc

************************ MATLAB语言基本知识************************ 物理电气信息学院自控系 宋娟 2012年8月

Matlab语言基本知识(一) 1.掌握MATLAB常用命令 >> who %列出工作空间中变量 Your variables are: a ans b c >> whos %列出工作空间中变量,同时包括变量详细信息 Name Size Bytes Class a 1x1 8 double array ans 1x1 8 double array b 1x1 8 double array c 1x3 24 double array Grand total is 6 elements using 48 bytes >>save test %将工作空间中变量存储到test.mat文件中 >>load test %从test.mat文件中读取变量到工作空间中 >>clc %清除命令窗口中内容 >>clear %清除工作空间中变量 >>format %命令窗口数据显示格式命令 >>help %函数名(回车)%对所选函数的功能、调用格式及相关函数给出说明>>which %显示指定的外部函数(M文件)所在的目录 如:which abc 则系统会显示文件abc所在的目录

>>what %列出指定目录下的M文件、MAT文件、MEX文件和Class >>lookfor %查找具有某种功能的函数但却不知道该函数的准确名称如:lookfor Lyapunov 可列出与Lyapunov有关的所有函数。 2.MATLAB变量与运算符 变量命名规则如下: (1)变量名可以由英语字母、数字和下划线组成 (2)变量名应以英文字母开头 (3)长度不大于31个 (4)区分大小写 MATLAB中设置了一些特殊的变量与常量,列于下表。 MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符

MATLAB 语言的基本使用方法

实验一 MATLAB 语言的基本使用方法 1. 实验目的 1) 了解MATLAB 程序设计语言的基本特点,熟悉MATLAB 软件运行环境。 2) 掌握创建、保存、打开文件及数据的方法,掌握设置文件路径的方法。 3) 掌握变量、函数等有关概念,具备初步的将一般数学问题转化为对应计算机模型并进行处理的能力。 2. MATLAB 基础知识 2.1 MATLAB 程序设计语言简介 MATLAB ,Matrix Laboratory 的缩写,是由MathWorks 公司开发的一套用于科学工程计算的可视化高性能语言,具有强大的矩阵运算能力。 与大家常用的Fortran 和C 等高级语言相比,MATLAB 的语法规则更简单,更贴近人的思维方式,被称之为“草稿纸式的语言”。 MATLAB 软件主要由主包、仿真系统(simulink )和工具箱(toolbox )三大部分组成。 2.2. MATLAB 界面简介 下面我们主要对MATLAB 基本界面进行介绍。如图 1-1所示,命令窗口包含标题栏、菜单栏、工具栏、命令行区、状态栏、垂直和水平波动条等 区域。 标题栏菜单栏工具栏命令行区状态栏垂直和水平滚 动条 图 1-1 MATLAB 基本界面——命令窗口 1) 菜单栏 菜单栏中包括File 、Edit 、View 、Web 、Window 和Help 六个菜单项。这里着重介绍File 项。 File 项是数据输入/输出的接口, 包括10个子项, 这里重点介绍其中的5个子项: New: 新建文件项。 有四个选择: M File(.M ,文本格式的MATLAB 程序文件, 可以直接通过文件名的方式在MATLAB 环境下解释运行); Figure(图形);

Matlab语言基础编程教程

MATLAB入门教程 1.MATLAB的基本知识 1-1、基本运算与函数 在MA TLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter 键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示:">>"是MA TLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示:MA TLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MA TLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MA TLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2); 若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MA TLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数

MATLAB语言入门仿真作业五

2012年MATLAB语言入门第五次仿真作业Array 1.对一个M=16QAM通信系统进行蒙特卡罗仿真,仿真误码率,并与理论曲线比较。% test1 % cm_sm41.m function [p]=cm_sm41(snr_in_dB) % snr_in_dB=-1:0.01:11; N=10000; d=1; Eav=10*d.^2; snr=10.^(snr_in_dB/10); sgma=sqrt(Eav./(8*snr)); M=16; for i=1:N temp=rand; dsource(i)=1+floor(M*temp); end; %mapping to the signal constellation follows mapping=[-3*d 3*d; -d 3*d; d 3*d; 3*d 3*d; -3*d d; -d d; d d; 3*d d; -3*d -d; -d -d; d -d; 3*d -d; -3*d -3*d; -d -3*d; d -3*d; 3*d -3*d]; for i=1:N qam_sig(i,:)=mapping(dsource(i),:); end; %received signal for i=1:N [n(1) n(2)]=gngauss(sgma); % n=[n(1) n(2)]; % n(1)=sgma*rand; % n(2)=sgma*rand;

r(i,:)=qam_sig(i,:)+n; end %detection and error probability calculation numoferr=0; for i=1:N for j=1:M metrics(j)=(r(i,1)-mapping(j,1))^2+(r(i,2)-mapping(j,2))^2; end [min_metric decis]=min(metrics); if (decis~=dsource(i)) numoferr=numoferr+1; end end p=numoferr/(N); %gngauss.m function[gsrv1 gsrv2]=gngauss(sgma) u=rand; z=sgma*(sqrt(2*log(1/(1-u)))); u=rand; gsrv1=z*cos(2*pi*u); gsrv2=z*sin(2*pi*u); %test1.m SNRindB1=0:2:15; SNRindB2=0:0.1:15; M=16; k=log2(M); for i=1:length(SNRindB1) smld_err_prb(i)=cm_sm41(SNRindB1(i));% simulated error rate echo off; end; echo on; for i=1:length(SNRindB2) SNR=exp(SNRindB2(i)*log(10)/10);%signal to noise ratio % theoretical symbol error rate theo_err_prb(i)=4*qfunc(sqrt(3*k*SNR/(M-1))); echo off; end; echo on; %Plotting commands follow semilogy(SNRindB1,smld_err_prb,'*'); hold semilogy(SNRindB2,theo_err_prb);

相关主题
相关文档 最新文档