通信系统中的软件仿真3

上传人:t****d 文档编号:243009444 上传时间:2024-09-13 格式:PPT 页数:35 大小:196KB
返回 下载 相关 举报
通信系统中的软件仿真3_第1页
第1页 / 共35页
通信系统中的软件仿真3_第2页
第2页 / 共35页
通信系统中的软件仿真3_第3页
第3页 / 共35页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三讲字符串、单元数组和结构数组,1,数组类型,基本组分,组分内涵,基本组分占用字节数,数值数组,元素,双精度实数标量,或双精度复数标量,8,16,字符串,元素,字符,2,单元数组,单元,可以存放任何类型、任何大小的数据。,不定,结构数组,结构,只有挂接在结构上的“域”才能存放数据。数据可以是任何类型、任何大小。,不定,2,字符串数组,单元数组,结构数组,稀疏矩阵,关于数据类型的归纳性说明,3,字符串数组,字符串数组,简称串数组。,字符串数组的作用:,没有串数组及相应的操作,那么数据可视化、图形用户界面GUI的制作将会遇到困难,构作MATLAB的宏指令也将会遇到困难。,字符变量的创建方式,:在指令窗中,先把待建的字符,放在“单引号对”中,,再按Enter键。,注意,:,“单引号对”必须在,英文状态下,输入,其作用是MATLAB识别送来内容“身份”(是变量名、数字,还是字符串)所必需的,字符串是以,ASCII,形式存储的。,数字标量在内存中存放时需要8个字节(Byte),而一个字符的存放只需2个字节。,4,串数组的属性和标识,复杂串数组的创建,串转换函数,串操作函数,5,串数组的属性和标识,演示:串的基本属性、标识和简单操作。,创建串数组,串数组的大小,串数组的元素标识,串数组的ASCII码,对字符串ASCII码数组的操作,中文字符串数组,创建带单引号的字符串,由小串构成长串,6,【例1】本例演示:串的基本属性、标识和简单操作。,(1)创建串数组,a=This is an example.,a =,This is an example.,(2)串数组a的大小,size(a),ans =,1 19,(3)串数组的元素标识,a14=a(1:4),%提出一个子字符串,ra=a(end:-1:1),%字符串的倒排,a14 =,This,ra =,.elpmaxe na si sihT,7,(4)串数组的ASCII码,ascii_a=double(a),%产生ASCII码,ascii_a =,Columns 1 through 19,84 104 105 115 32 105 115 32 97 110 32 101 120 97 109 112 108 101 46,char(ascii_a),%把ASCII码变回字符串,ans =,This is an example.,(5)对字符串ASCII码数组的操作,w=find(a=a,%找出串数组a中,小写字母的元素位置,ascii_a(w)=ascii_a(w)-32;,%大小写字母ASCII值差32,用数值加法改变部分码值,char(ascii_a),%把新的ASCII码翻成字符,ans =,THIS IS AN EXAMPLE.,8,复杂串数组的创建,多行串数组的直接创建,利用串操作函数创建多行串数组,转换函数产生数码字符串,9,多行串数组的直接创建,在直接创建多行串数组时,关键是要保证同一串数组的,各行字符数要相等,,即保证各行等长。为此,有时不得不,通过空格符的增减,来调节各行的长度,使它们彼此相等。,例: S=This string array ,has multiple rows.,增加一空格使两行长度相等,10,利用串操作函数创建多行串数组,用专门函数char , str2mat , strvcat创建多行串数组示例。,Char: 创建字符传输组或将其他类型变量转化为字符串数组,str2mat :将字符串转换为含有空格的数组,Strvcat:创建字符串数组,这三个函数创建多行数组时,不必担心每行字符数是否相等。它们总会,按最长行设置,第二维的长度,其他行的尾部用空格填充。,11,转换函数产生数码字符串,最常用的数组/字符串转换函数int2str , num2str , mat2str 示例。,int2str :将整数转换为字符串,num2str :把数值转换为字符串,mat2str:将数组转换为字符串,12,串转换函数,指 令,含 义,指 令,含 义,abs,把串翻译成ASCII码,hex2dec,16-进制串转换为十进制整数,base2dec,X-进制串转换为十进制整数,hex2num,16-进制串转换为浮点数,bin2dec,二进制串转换为十进制整数,int2str,把整数转换为串,char,把ASCII码及其他非数值类数据转换成字符串,mat2str,把数值矩阵转换为eval可调用的格式,dec2base,十进制整数转换为X进制串,num2str,把数值转换为串,dec2bin,十进制整数转换为二进制串,setstr,把ASCII码翻译成串,dec2hex,十进制整数转换为十六进制串,sprintf,以控制格式把数值转换为串,double,把任何类型数据转换成双精度数值,sscanf,在控制格式下把串转换为数值,fprintf,把格式化数据写到文件或屏幕,str2num,把串转换为数值,13,串操作函数(一),指 令,含 义,blanks(n),创建n个空格串,char(s1,s2,),把串s1,s2等逐个写成行,形成多行数组,deblank(s),删去串尾部的空格符,eval(s),把串s当作MATLAB指令运行,eval(s1,sc),把串s1当作MATLAB指令运行。若s1运行发生错误,则运行sc,feval(f,x,y,),对输入宗量x,y等计算函数f,findstr(s1,s2),在较长串中,找出短串的起始字符的下标,ischar(s),s是字符串则判“真”给出逻辑1,isletter(s),以逻辑1指示s里文字符的位置,isspace(s),以逻辑1指示s里空格符的位置,lasterr,MATLAB发出的最新错误信息,14,串操作函数(二),指 令,含 义,lower(s),使s里的英文字母全部小写,str2mat(s1,s2,),把串s1,s2等逐个写成行,形成多行数组,并删出全空行,strcat(s1,s2,),把串s1,s2等连接成长串,strcmp(s1,s2),若串s1,s2相同,则判“真”给出逻辑1,strjust(s),字符串的对齐方式:或右对齐,或左对齐,或对中,strmatch(s1,s2),逐行搜索串s2 ,给出以s1开头的那些行的行号,strncmp(s1,s2,n),若串s1,s2的前n个字符相同,则判“真”给出逻辑1,strrep(s1,s2,s3),串s1中的所有出现s2的地方替换为s3,strtok(s),找出第一个间隔符(空格、制表位、回车符)前的内容,strvcat(s1,s2,),把串s1,s2等逐个写成行,形成多行数组,upper(s),使s里的英文字母全部大写,15,与字符串有关的另一个重要函数是eval,其调用格式为:,eval(t),其中t为字符串。它的作用是把字符串的内容作为对应的MATLAB语句来执行。例如,t=pi;m= t,sin(t),cos(t) ;y=eval(m),y = 3.1416 0.0000 -1.0000综合例题:在MATLAB计算生成的图形上标出图名和最大值点坐标。,16,单元数组(Cell Array),单元数组的基本组分(Element)是,单元(Cell ),(抽屉)。,每个单元本身在数组中是平等的,它们只能以下标区分。,单元可以存放任何类型、任何大小的数组(如任意维数值数组、字符串数组、符号对象等)。而且,同一个单元数组中各单元中的内容可以不同。,单元数组的维数不受限制;单元数组对单元的编址方法也有,单下标编址,和,全下标编址,两种。,17,单元标识寻访和内容编址寻访的不同,对单元数组来说,单元和单元里的内容是两个不同范畴的东西。因此,,寻访,单元和,寻访,单元,中的内容,是两种不同的操作。,为此,MATLAB设计了两种不同的操作:,单元,外标识,(Cell Indexing),单元,内编址,(Content Addressing),例:,A(2,3):是指A单元数组中的第2行第3列单元元素;,A2,3:是指A单元数组第2行第3列单元中所允许存或取的内容;,注意,:两者的区别仅在于所用的括号不同。,“外标识的单元元素”用的是“圆括号”,“内编址单元元素内涵”用的是“花括号”,18,单元数组的创建,外标识单元元素赋值法,编址单元元素内涵的直接赋值法,直接使用花括号将所有元素内容一次设定完成,19,单元数组的扩充,单元数组的扩充,利用cell指令创建单元数组,单元数组的“列”扩充和“行”扩充,单元数组的内容显示,cellplot能用图形形象化地表示单元数组的内容。,celldisp显示单元数组的全部或部分内容,单元内编址(Content Addressing)方式也可显示单元数组的全部或部分内容,20,结构数组(Structure Array),结构数组,:与单元数组一样,也能在一个数组里存放各类数据。从一定意义上讲,结构(构架)数组组织数据的能力比元胞数组更强、更富于变化。,结构数组的基本组分,是,结构(Structure),。数组中的每个结构是平等的,它们以下标区分。结构必须在划分,域(Fields,字段),后才能使用。数据不能直接存放于结构,而只能存放在域(字段)中。结构的域(字段)可存放任何类型、任何大小的数组(如任意维数值数组、字符串数组、符号对象等)。而且,不同结构的同名域(字段)中存放的内容可以不同。,结构数组的维数不受限制。结构数组对结构的编址方法也有,单下标编址,和,全下标编址,两种。,21,结构数组与单元数组的异同比较,22,结构矩阵的元素可以是不同的数据类型,它能将一组具有不同属性的数据纳入到一个统一的变量名下进行管理。建立一个结构矩阵可采用给结构成员赋值的办法。具体格式为,结构矩阵名.成员名=表达式,其中表达式应理解为矩阵表达式。,例如,建立一个含有3个元素的结构矩阵a:,a(1).x1=10;a(1).x2=liu;a(1).x3=11,21;34,78;,a(2).x1=12;a(2).x2=wang;a(2).x3=34,191;27,578;,a(3).x1=14;a(3).x2=cai;a(3).x3=13,890;67,231;,结构矩阵的建立与引用,23,注意:,结构矩阵元素的成员也可以是结构数据。,引用结构矩阵元素的成员时,显示其值;,引用结构矩阵元素时,显示成员名和它的值,但成员是矩阵时,不显示具体内容,只显示成员矩阵大小参数;,引用结构矩阵时,只显示结构矩阵大小参数和成员名。,24,结构成员的修改,可以根据需要增加或删除结构的成员。例如要给结构矩阵a增加一个成员x4,可给a中任意一个元素增加成员x4:,a(1).x4=410075;,但其他成员均为空矩阵,可以使用赋值语句给它赋确定的值。,要删除结构的成员,则可以使用rmfield函数来完成。例如,删除成员x4:,a=rmfield(a, x4);,25,稀疏矩阵,稀疏矩阵(Sparse Matrix):一个矩阵中包含很多零元素。(只有很少数的非零元素,一般只占矩阵总数的1%左右),为避免对计算机资源的浪费,一般只存储非零元素及与之相配的行号、列号。,稀疏矩阵在工程上的用途相当广泛,例如电路、图学、有限元素法及偏微分方程等。,26,稀疏矩阵的创建,稀疏矩阵的储存空间,稀疏矩阵的观看与图标,稀疏矩阵的运算,27,稀疏矩阵的创建,根据储存方式的不同,MATLAB的矩阵可分为两种:,完全矩阵,(Full Matrix):每一个元素都存为double的数据类型,一个mn的完全矩阵所占用的内存空间是8mn个字节(Byte)。,稀疏矩阵,(Sparse Matrix):由于大部分的元素都是0,只须储存“非零元素的位置”及其“元素值”即可。,28,使用,sparse,命令直接创建稀疏矩阵:,格式:S=sparse(i,j,s,m,n),其中是i行索引,j是列索引,s是非零元素所形成的向量,m是s的列维数,n是s的行维数。,使用,spdiags,命令可由对角线元素来构建一个稀疏矩阵:,格式:S=spdiags(D,p,m,n),其中D的每一个列代表矩阵的对角线向量,p代表对角线的位置(0代表主对角线,-1代表向下位移一单位的次对角线,1代表向上位移一单位的次对角线,依此类推),m与n则分别代表矩阵的行维数与列维数。,29,稀疏矩阵的储存空间,对于一个只包含实数的稀疏矩阵,假设其维数为mn,含有nnz个非零元素,MATLAB动用了三个内部数组来储存此稀疏矩阵的相关信息:,第一个数组:以double方式储存了所有的非零元素,其长度为nnz,使用的空间大小为8nnz字节(Bytes);,第二个数组:以整数方式储存了每个元素的行索引,其长度为nnz,使用的空间大小为4nnz字节(Bytes) ;,第三个数组:以整数方式储存了列的起始指针,其长度为n,使用的空间大小为4n字节(Bytes) ;,整个稀疏矩阵占用的空间大小为8nnz+4nnz+4n+4=12nnz+4n+4,30,稀疏矩阵的观看与图标,使用spy命令可观看稀疏矩阵的非零元素分布情况。,稀疏矩阵表示一个“无向图”的“邻近矩阵”,31,稀疏矩阵的运算,完全矩阵的运算与函数也都适用于稀疏矩阵。,由于稀疏矩阵的存储空间变小,而且MATLAB专门开发了针对它的算法,因此对稀疏矩阵的运算非常快。(见示例),稀疏矩阵的运算还包括下列几种:,排列及重排,因子分解,线性联立方程式的求解,特征值及奇异值的计算,32,【例3.4】综合例题:在MATLAB计算生成的图形上标出图名和最大值点坐标。,clear,a=2;%设置衰减系数,w=3; %设置振荡频率,t=0:0.01:10;%取自变量采样数组,y=exp(-a*t).*sin(w*t);%计算函数值、产生函数数组,y_max,i_max=max(y);,%找最大值元素位置t_text=t=,num2str(t(i_max);%生成最大值点的横坐标字符串y_text=y=,num2str(y_max);%生成最大值点的纵坐标字符串,max_text=char(maximum,t_text,y_text);,%生成标志最大值点的字符串,tit=y=exp(-,num2str(a),t)*sin(,num2str(w),t);,%plot(t,zeros(size(t),k),%画纵坐标为0的基准线,hold on,%保持绘制的线不被清除,plot(t,y,b),plot(t(i_max),y_max, r. , MarkerSize,20),%用大红点标最大值点text(t(i_max)+0.3,y_max+0.05,max_text),%生成标志图名的字符串,title(tit),xlabel(t),ylabel(y),hold off,%书写图名、横坐标名、纵坐标名,33,34,关于数据类型的归纳性说明,数据类型,Data Types,数值,Numeric,字符串,char,单元,cell,结构,structure,函数句柄,function handle,JAVA类,JAVA Class,双精度,double,单精度,single,整数类,Int*,uint*,稀疏,sparse,35,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!