Matlab程序设计基础与simulink仿真

上传人:n**** 文档编号:53552646 上传时间:2018-09-02 格式:PPT 页数:206 大小:1.64MB
返回 下载 相关 举报
Matlab程序设计基础与simulink仿真_第1页
第1页 / 共206页
Matlab程序设计基础与simulink仿真_第2页
第2页 / 共206页
Matlab程序设计基础与simulink仿真_第3页
第3页 / 共206页
Matlab程序设计基础与simulink仿真_第4页
第4页 / 共206页
Matlab程序设计基础与simulink仿真_第5页
第5页 / 共206页
点击查看更多>>
资源描述

《Matlab程序设计基础与simulink仿真》由会员分享,可在线阅读,更多相关《Matlab程序设计基础与simulink仿真(206页珍藏版)》请在金锄头文库上搜索。

1、第一章 Matlab 编程基础,龙姝明 教授 陕西理工学院物电学院 2013.9 于汉中,1.1 Matlab的数据类型及表示数值的范围,1.1.1 Matlab中的数值型数据 无符号整型 uint8: 表数范围 0255(28-1) uint16: 表数范围 065535(216-1) uint32: 表数范围 04294967295(232-1) uint64: 018446744073709551615 (264-1)即 0intmax(uint64) 机器码:直接化为二进制正整数,无符号整型数超范围时取最大正整数或最小的0。上超封顶,下超封底。 例如 uint8(-179)为00H,i

2、nt8(279)为ffH。,有符号整数,int8: 表数范围, -128(-27)127 (27-1) Int16: 表数范围,-32768(-215)32767(215-1) Int32: 表数范围, -2147483648(-231)2147483647(231-1) Int64: -9223372036854775808(-263) 9223372036854775807(263-1);即 intmin(int64) intmax(int64) 机器码:不超范围时正数直接化为二进制整数,负数加2n (n=8,16, 32,64) 化为正数再化为二进制整数。超范围时取最大正整数或绝对值最大

3、的负整数。上超封顶,下超封底。 例如 int8(-79)为b1H,int8(179)为ffH。,浮点型实数,单精度实数single:每个数据占4B空间,表数绝对值范围为1.1755e-38(2-126)3.4028e+38(7f7fffff) realmax(single)=3.40282e+38 =2127*(2-2-23) 双精度实数 Double:每个数据占8B空间,表数绝对值范围为 2.2251e-308(2-1022)1.7977e+308(7fefffffffffffff) realmax(double)= 1.7977e+308=21023*(2-2-52),实数的机器码,输入f

4、ormat hex命令后,输入实数,将会显示其十六进制编码。例如 format hex;x=(-1)*21023, y=single(-1*2-127) 显示结果分别为 x=ffe0000000000000H,y=80400000H 实数分大小实数分别编码 大实数x: 2127 *(2-2-23) |xs|2-126; 21023*(2-2-52)|xd|2-1022 小实数x: 0 |xs|2-126-2-149; 0 |xd| 2-1022-2-1074 single实数的8位指数码全1时,数符码和尾码有224状态不能表示数字,其中有两种状态分别表示+inf和-inf(即 2128),另有

5、一种状态表示nan(-2128*(1+1/2),所以single实数共有232-(224)+3= 4278190083个表数状态。大数的量化阶为2-23, 小数的量化阶为2-149。 double实数的11位指数码全1时,数符码和尾码有253状态不能表示数字,其中有两种状态分别表示+inf和-inf(即 21023),另有一种状态表示nan(-21023*(1+1/2),所以double实数共有264-(253)+3= 18437736874454810624个表数状态。大数的量化阶为2-52,小数的量化阶为2-1074,注意10-308与10-308+2-1074显示的不同。,大single

6、浮点数x=(-1)s2p(1+t)编码,存s,p+127,t,1bit数符码:正实数s=0,负实数s=1, s占编码的首个bit位。8bit指数码:指数码是p+127的编码,占编码的第二到第9位。-126p 127,1 p+127254。s=0,t=0,p=128对应inf,s=1,p=128,t=0.5对应非数nan. 23bit尾数码:0 t 1-2-23, t为尾数,t 码占第10到32位。 如果t=2 -m+2 -q, 就在尾数的第m位和第q位都置1. 例如 -128.5=(-1)127(1+2-8),即s=1, p=7,t=2-8,m=8,则有 single码:p+127=128+6

7、=100001102;t=2-8=000000010000000000000002;-128.5single=1100 0011 0000 0000 1000 0000 0000 00002 =c3008000H;,小single浮点数编码 x=(-1)s2p*t,存s,p+126,t,1bit数符码:正实数s=0,负实数s=1, s占编码的首个bit位。8bit指数码:指数码是p+126的编码,占编码的第2到第9位。 p=-126因而指数码8位全0。23bit尾数码:0 t 1-2-23, t为尾数,t码占第10到32位。 如果t=2-m+2-q, 就在尾数的第m位和第q位都置1. 例1 (

8、2-127+2-149 ) = (-1)12-126(2-1+2-23),即s=1, p=-127,t=2-1+2-23, 则有m=1,q=23, p+126=0, s=1, t=100000000000000000000012;(2-127+2-149)single=1000 0000 0100 0000 0000 0000 0000 00012 =80400001H; 例2 2-130=(-1)02-126(2-4), s=0, p+126=0,t=2-4, m=4因而有 2-149single = (-1)02-126*2-23 =00000001H,大double浮点数编码x=(-1)

9、s2p(1+t),存s,p+1023,t,1bit数符码:正实数s=0,负实数s=1, s占编码的首个bit位。 11bit指数码:指数码是对p+1023的编码,占编码的第2到第12位。 -1022p 1023; 1 p+10232046。s=0,t=0,p=1024对应inf. s=1,p=1024,t=0.5对应非数nan. 52bit尾码: 0 t1-2-52,称 t 为尾数,t 码占13到64bit位。 如果t =2-m+2-q, 就在尾数的第m位和第q位都置1. 例如 -128.5=(-1)127(1+2-8),即s=1, p=7,t=2-8,m=8,则有 double码:p+102

10、3=210+6=100000001102=406Ht=2-8=0100000000000H; -128.5double=1100 0000 0110 0000 0001 0000.00002;=c060100000000000H,1bit数符码:正实数s=0,负实数s=1, s占编码的首个bit位。 11bit指数码:指数码是对p+1022的编码,占编码的第2到第12位。p =-1022固定不变,11位指数码全0. 52bit尾码: 0 t1-2-52,称 t 为尾数码占13到64bit位。 如果t =2-m+2-q, 就在尾数的第m位和第q位都置1.例如 2-1023=(-1)02-1022

11、*2-1, s=0, p=-1022,t=2-1,m=1double码:p+1022=0, t=2-1=1000000000000H; 2-1023double=0000 0000 0000 1000 0000 0000.00002;= 0008000000000000H2-1074double =(-1)02-1022*2-52 = 0000000000000001H,小double浮点数编码x=(-1)s2pt,存s,p+1022=0,t,数值型变量定义语句,a=uint8(1:100); b=int32(0:106:231); x=single(1.2*102:1.05*1030:103

12、3.1) y=rands(5)%默认是双精度数组s=solve(x2-5*x+7=0,x);%给出符号常量 z=eval(s)%将符号常量转化为双精度实数数组,1.1.2 Matlab中的逻辑数据logical,逻辑常数true、 false分别表示逻辑真、假。 true、 false分别以1和0参与数值运算或显示。 任意类型非0数可以表示逻辑真,0表示逻辑假。 给逻辑变量赋值的方法: (1) j=logical(1); k=logical(0); (2) j=true; k=false; 关系运算、逻辑运算都将产生逻辑数据。 每个逻辑数据占1 字节存储空间。 逻辑数据显示时不化为2位十六进制

13、,要么是1要么是0。,从数组中查找满足条件的元素,A=magic(5); L=and(A10,A19) % L是与A结构相同的逻辑型数组,满足条件的元素位置处写1,其余位置写0。 A(L) %给出这些位置的元素值,结果单列化; B=L.*A %保留符合条件的元素值,0化不满足条件的元素。A,L,B分别为,1.1.3 Matlab中的字符串数据(字符数组)char,字符串常数:一对定界符号 (即单撇号)限定的一串数字、符号、汉字. 字符数组:存储字符串常数的变量。 char(33:1276): 给出95个可见的半角字符常数。 char(19968:40869): 给出20902个汉字字符常数,

14、汉字在Matlab环境中被存为uint16型数据,即无符号16位整数. uint16(字符串): 给出所有字符的无符号16位整数表示的计算机编码。 Matlab能够将英文、数字半角符号及双字节编码的中文字存入字符数组中,每一个字符(无论全角还是半角)均占两个字节的存储空间。,创建字符数组的方法,字符串:字符排列在一行上构成的一维行字符数组。 (1)由键盘直接输入一串字符并放于一对单撇中, 生成一维字符数组,例如y=Matlab。 (2)调用char(串1,串2,串3)生成二维字符数组, 即每行一个字符串,列数由其中的长串决定。 (3)调用char(字符编码)函数转换字符编码为单个字符或字符串。

15、例如x=char(97:122) 。 (4)num2str(x):转换数值为“数字类字符数组”。int2str(x)将整数转换为字符串;mat2str(x)将二维数值型数组转换为一维字符数组(即创建数组时由键盘输入的序列),并保留、行内数据间的空格、分行用的分号。例如a=magic(3);b=mat2str(a);输出8 1 6;3 5 7;4 9 2。,查汉字十六进制机器码,format hex; x=龙姝明; y=uint16(x),z=char(y) 显示为y=9f99 59dd 660ez=龙姝明 原理:转换字符串为uint16并以十六进制编码显示。 hz=reshape(char(1

16、9968:40869),1493,14) % 建立二维汉字字符数组.,1.1.4 函数指针数据function_handle,获得函数指针有三种方式: (1) (自变量)函数表达式:例如 p=(x,y)(x.2+y.2).(0.5 (2) funname:funname是内建函数名或自定义函数名, 例如 p=heaviside。 (3) str2func(已经建立的函数名),例如 p=str2func(heaviside)。 通过函数指针调用函数有三种方法: (1) 指针(自变量) (2) feval(指针,自变量) (3) 内建函数名2(函数指针1,自变量变化区间)。 函数指针主要用于函数嵌套调用例如fminbnd(sin, 0, 2*pi)给出区间极小值4.7124.,函数指针应用示例,p=(x)cos(x.2).*exp(-x/4); x=0:0.1:2*pi; y=p(x);plot(x,y,r-);xlabel(x);ylabel(y(x);grid on,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号