通信系统中的软件仿真3
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
显示单元数组的全部或部分内容
结构数组(Structure Array)
结构数组:与单元数组一样,也能在一个数组 里存放各类数据。从一定意义上讲,结构(构 架)数组组织数据的能力比元胞数组更强、更 富于变化。
结构数组的基本组分是结构(Structure)。数 组中的每个结构是平等的,它们以下标区分。 结构必须在划分域(Fields,字段)后才能使 用。数据不能直接存放于结构,而只能存放在 域(字段)中。结构的域(字段)可存放任何 类型、任何大小的数组(如任意维数值数组、 字符串数组、符号对象等)。而且,不同结构 的同名域(字段)中存放的内容可以不同。
a(1).x4='410075'; 但其他成员均为空矩阵,可以使用赋值语句给它赋 确定的值。
要删除结构的成员,则可以使用rmfield函数来完成。 例如,删除成员x4:
a=rmfield(a, 'x4');
稀疏矩阵
稀疏矩阵(Sparse Matrix):一个矩阵 中包含很多零元素。(只有很少数的非 零元素,一般只占矩阵总数的1%左右)
A(2,3):是指A单元数组中的第2行第3列单元元素; A{2,3}:是指A单元数组第2行第3列单元中所允许存或取的内
容;
注意:两者的区别仅在于所用的括号不同。
“外标识的单元元素”用的是“圆括号” “内编址单元元素内涵”用的是“花括号”
单元数组的创建
外标识单元元素赋值法 编址单元元素内涵的直接赋值法 直接使用花括号{}将所有元素内容一次设定
串数组的属性和标识
演示:串的基本属性、标识和简单操作。
创建串数组 串数组的大小 串数组的元素标识 串数组的ASCII码 对字符串ASCII码数组的操作 中文字符串数组 创建带单引号的字符串 由小串构成长串
【例1】本例演示:串的基本属性、标识和简单操作。
(1)创建串数组
注意:结构矩阵元素的成员也可以是结构数据。
引用结构矩阵元素的成员时,显示其值; 引用结构矩阵元素时,显示成员名和它的值,但
成员是矩阵时,不显示具体内容,只显示成员矩 阵大小参数; 引用结构矩阵时,只显示结构矩阵大小参数和成 员名。
结构成员的修改
可以根据需要增加或删除结构的成员。例如要给结 构矩阵a增加一个成员x4,可给a中任意一个元素增 加成员x4:
不定
字符串数组 单元数组 结构数组 稀疏矩阵 关于数据类型的归纳性说明
字符串数组
字符串数组简称串数组。
字符串数组的作用:没有串数组及相应的操作, 那么数据可视化、图形用户界面GUI的制作将会 遇到困难,构作MATLAB的宏指令也将会遇到困 难。
字符变量的创建方式:在指令窗中,先把待建的 字符放在“单引号对”中,再按[Enter]键。
数码下标:全下标、Байду номын сангаас下标 如:A(1,2),即A(4)
任何类型(数值、字符、元 胞、构架等及其他对象)
单元本身 如:单元A(1,2)
被标识的单元名 如:A(1,2)
“花括号”标识的单元名 如:A{1,2}
cell2struct把单元数组转换 为构架数组
数码下标:全下标、单下标 如:B(1,2),即B(4)
feval(f,x,y,…) findstr(s1,s2) ischar(s) isletter(s) isspace(s) lasterr
含义 创建n个空格串 把串s1,s2等逐个写成行,形成多行数组 删去串尾部的空格符 把串s当作MATLAB指令运行 把串s1当作MATLAB指令运行。若s1运行发生错 误,则运行sc 对输入宗量x,y等计算函数f 在较长串中,找出短串的起始字符的下标 s是字符串则判“真”给出逻辑1 以逻辑1指示s里文字符的位置 以逻辑1指示s里空格符的位置 MATLAB发出的最新错误信息
把串s1,s2等逐个写成行,形成多行数组
与字符串有关的另一个重要函数是eval,其调用格式为: eval(t)
其中t为字符串。它的作用是把字符串的内容作为对应 的MATLAB语句来执行。例如, t=pi; m=' [t,sin(t),cos(t)] '; y=eval(m) y=
3.1416 0.0000 -1.0000 综合例题:在MATLAB计算生成的图形上标出图名和最 大值点坐标。
例: S=['This string array '
'has multiple rows.']
增加一空格 使两行长度
相等
利用串操作函数创建多行串数组
用专门函数char , str2mat , strvcat创建多行串 数组示例。
Char: 创建字符传输组或将其他类型变量转化为字 符串数组
结构数组的维数不受限制。结构数组对结构的 编址方法也有单下标编址和全下标编址两种。
结构数组与单元数组的异同比较
单元数组
结构数组
举例
(3×4)单元数组A
基本组分(Element) 单元(Cell)
(3×4)结构数组B 它有名为f1,f2的两个域(字段) 结构(Structure)
对基本组分的编址 可存放的数据类型 直接存放数据的场所 基本组分的寻访方式 具体内容的寻访方式 实现单元数组与结构 数组之间转换的指令
注意: “单引号对”必须在英文状态下输入,其作用
是MATLAB识别送来内容“身份”(是变量名、数字, 还是字符串)所必需的,字符串是以ASCII形式存储的。
数字标量在内存中存放时需要8个字节(Byte), 而一个字符的存放只需2个字节。
串数组的属性和标识 复杂串数组的创建 串转换函数 串操作函数
bin2dec 二进制串转换为十进制整数 int2str 把整数转换为串
char
把ASCII码及其他非数值类
数据转换成字符串
dec2base 十进制整数转换为X进制串
mat2str num2str
把数值矩阵转换为eval可调用 的格式
把数值转换为串
dec2bin 十进制整数转换为二进制串 setstr
单元数组(Cell Array)
单元数组的基本组分(Element)是单元(Cell ) (抽屉)。
每个单元本身在数组中是平等的,它们只能以 下标区分。
单元可以存放任何类型、任何大小的数组(如 任意维数值数组、字符串数组、符号对象等)。 而且,同一个单元数组中各单元中的内容可以 不同。
含义
使s里的英文字母全部小写 把串s1,s2等逐个写成行,形成多行数组,并删出 全空行
把串s1,s2等连接成长串 若串s1,s2相同,则判“真”给出逻辑1 字符串的对齐方式:或右对齐,或左对齐,或对中
逐行搜索串s2 ,给出以s1开头的那些行的行号 若串s1,s2的前n个字符相同,则判“真”给出逻辑 1 串s1中的所有出现s2的地方替换为s3 找出第一个间隔符(空格、制表位、回车符)前的 内容
(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<=‘z’); %找出串数组a中,小写字母的元素
位置
ascii_a(w)=ascii_a(w)-32; %大小写字母ASCII值差32,用数值
加法改变部分码值
char(ascii_a)
串操作函数(二)
指令 lower(s) str2mat(s1,s2,…)
strcat(s1,s2,…) strcmp(s1,s2) strjust(s) strmatch(s1,s2) strncmp(s1,s2,n)
strrep(s1,s2,s3) strtok(s)
strvcat(s1,s2,…)
str2mat :将字符串转换为含有空格的数组 Strvcat:创建字符串数组
这三个函数创建多行数组时,不必担心每行字 符数是否相等。它们总会按最长行设置第二维 的长度,其他行的尾部用空格填充。
转换函数产生数码字符串
最常用的数组/字符串转换函数int2str , num2str , mat2str 示例。
结构矩阵名.成员名=表达式
其中表达式应理解为矩阵表达式。
例如,建立一个含有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];
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
%把新的ASCII码翻成字符
ans =
THIS IS AN EXAMPLE.
复杂串数组的创建
多行串数组的直接创建 利用串操作函数创建多行串数组 转换函数产生数码字符串
多行串数组的直接创建
在直接创建多行串数组时,关键是要保 证同一串数组的各行字符数要相等,即 保证各行等长。为此,有时不得不通过 空格符的增减来调节各行的长度,使它 们彼此相等。
完成
单元数组的扩充
单元数组的扩充
利用cell指令创建单元数组 单元数组的“列”扩充和“行”扩充
单元数组的内容显示
cellplot能用图形形象化地表示单元数组的内 容。
celldisp显示单元数组的全部或部分内容 单元内编址(Content Addressing)方式也可
第三讲 字符串、单元 数组和结构数组
数组类型 基本组分
组分内涵
基本组分占 用字节数
数值数组 元素 双精度实数标量
8
或双精度复数标量
16
字符串 元素 字符
2
单元数组 单元 可以存放任何类型、 不定 任何大小的数据。
结构数组
结构
只有挂接在结构上 的“域”才能存放 数据。数据可以是 任何类型、任何大 小。
任何类型(数值、字符、单元、 结构等及其他对象)
“域(Field)” (字段) 如结构域B(1,2).f1
被标识的结构名 如:B(1,2)
带“域名”的标识结构名 如:B(1,2).f1
struct2cell把结构数组转换为单元 数组
结构矩阵的建立与引用
结构矩阵的元素可以是不同的数据类型,它能将一 组具有不同属性的数据纳入到一个统一的变量名下 进行管理。建立一个结构矩阵可采用给结构成员赋 值的办法。具体格式为
int2str :将整数转换为字符串 num2str :把数值转换为字符串 mat2str:将数组转换为字符串
串转换函数
指令
含义
abs
把串翻译成ASCII码
指令
含义
hex2dec 16-进制串转换为十进制整数
base2dec X-进制串转换为十进制整数 hex2num 16-进制串转换为浮点数
把ASCII码翻译成串
dec2hex double fprintf
十进制整数转换为十六进制 sprintf 串
把任何类型数据转换成双精 sscanf 度数值
把格式化数据写到文件或屏 str2num 幕
以控制格式把数值转换为串
在控制格式下把串转换为数 值 把串转换为数值
串操作函数(一)
指令 blanks(n) char(s1,s2,…) deblank(s) eval(s) eval(s1,sc)
单元数组的维数不受限制;单元数组对单元的 编址方法也有单下标编址和全下标编址两种。
单元标识寻访和内容编址寻访的不同
对单元数组来说,单元和单元里的内容是两个不 同范畴的东西。因此,寻访单元和寻访单元中的 内容是两种不同的操作。
为此,MATLAB设计了两种不同的操作:
单元外标识(Cell Indexing) 单元内编址(Content Addressing) 例:
结构数组(Structure Array)
结构数组:与单元数组一样,也能在一个数组 里存放各类数据。从一定意义上讲,结构(构 架)数组组织数据的能力比元胞数组更强、更 富于变化。
结构数组的基本组分是结构(Structure)。数 组中的每个结构是平等的,它们以下标区分。 结构必须在划分域(Fields,字段)后才能使 用。数据不能直接存放于结构,而只能存放在 域(字段)中。结构的域(字段)可存放任何 类型、任何大小的数组(如任意维数值数组、 字符串数组、符号对象等)。而且,不同结构 的同名域(字段)中存放的内容可以不同。
a(1).x4='410075'; 但其他成员均为空矩阵,可以使用赋值语句给它赋 确定的值。
要删除结构的成员,则可以使用rmfield函数来完成。 例如,删除成员x4:
a=rmfield(a, 'x4');
稀疏矩阵
稀疏矩阵(Sparse Matrix):一个矩阵 中包含很多零元素。(只有很少数的非 零元素,一般只占矩阵总数的1%左右)
A(2,3):是指A单元数组中的第2行第3列单元元素; A{2,3}:是指A单元数组第2行第3列单元中所允许存或取的内
容;
注意:两者的区别仅在于所用的括号不同。
“外标识的单元元素”用的是“圆括号” “内编址单元元素内涵”用的是“花括号”
单元数组的创建
外标识单元元素赋值法 编址单元元素内涵的直接赋值法 直接使用花括号{}将所有元素内容一次设定
串数组的属性和标识
演示:串的基本属性、标识和简单操作。
创建串数组 串数组的大小 串数组的元素标识 串数组的ASCII码 对字符串ASCII码数组的操作 中文字符串数组 创建带单引号的字符串 由小串构成长串
【例1】本例演示:串的基本属性、标识和简单操作。
(1)创建串数组
注意:结构矩阵元素的成员也可以是结构数据。
引用结构矩阵元素的成员时,显示其值; 引用结构矩阵元素时,显示成员名和它的值,但
成员是矩阵时,不显示具体内容,只显示成员矩 阵大小参数; 引用结构矩阵时,只显示结构矩阵大小参数和成 员名。
结构成员的修改
可以根据需要增加或删除结构的成员。例如要给结 构矩阵a增加一个成员x4,可给a中任意一个元素增 加成员x4:
不定
字符串数组 单元数组 结构数组 稀疏矩阵 关于数据类型的归纳性说明
字符串数组
字符串数组简称串数组。
字符串数组的作用:没有串数组及相应的操作, 那么数据可视化、图形用户界面GUI的制作将会 遇到困难,构作MATLAB的宏指令也将会遇到困 难。
字符变量的创建方式:在指令窗中,先把待建的 字符放在“单引号对”中,再按[Enter]键。
数码下标:全下标、Байду номын сангаас下标 如:A(1,2),即A(4)
任何类型(数值、字符、元 胞、构架等及其他对象)
单元本身 如:单元A(1,2)
被标识的单元名 如:A(1,2)
“花括号”标识的单元名 如:A{1,2}
cell2struct把单元数组转换 为构架数组
数码下标:全下标、单下标 如:B(1,2),即B(4)
feval(f,x,y,…) findstr(s1,s2) ischar(s) isletter(s) isspace(s) lasterr
含义 创建n个空格串 把串s1,s2等逐个写成行,形成多行数组 删去串尾部的空格符 把串s当作MATLAB指令运行 把串s1当作MATLAB指令运行。若s1运行发生错 误,则运行sc 对输入宗量x,y等计算函数f 在较长串中,找出短串的起始字符的下标 s是字符串则判“真”给出逻辑1 以逻辑1指示s里文字符的位置 以逻辑1指示s里空格符的位置 MATLAB发出的最新错误信息
把串s1,s2等逐个写成行,形成多行数组
与字符串有关的另一个重要函数是eval,其调用格式为: eval(t)
其中t为字符串。它的作用是把字符串的内容作为对应 的MATLAB语句来执行。例如, t=pi; m=' [t,sin(t),cos(t)] '; y=eval(m) y=
3.1416 0.0000 -1.0000 综合例题:在MATLAB计算生成的图形上标出图名和最 大值点坐标。
例: S=['This string array '
'has multiple rows.']
增加一空格 使两行长度
相等
利用串操作函数创建多行串数组
用专门函数char , str2mat , strvcat创建多行串 数组示例。
Char: 创建字符传输组或将其他类型变量转化为字 符串数组
结构数组的维数不受限制。结构数组对结构的 编址方法也有单下标编址和全下标编址两种。
结构数组与单元数组的异同比较
单元数组
结构数组
举例
(3×4)单元数组A
基本组分(Element) 单元(Cell)
(3×4)结构数组B 它有名为f1,f2的两个域(字段) 结构(Structure)
对基本组分的编址 可存放的数据类型 直接存放数据的场所 基本组分的寻访方式 具体内容的寻访方式 实现单元数组与结构 数组之间转换的指令
注意: “单引号对”必须在英文状态下输入,其作用
是MATLAB识别送来内容“身份”(是变量名、数字, 还是字符串)所必需的,字符串是以ASCII形式存储的。
数字标量在内存中存放时需要8个字节(Byte), 而一个字符的存放只需2个字节。
串数组的属性和标识 复杂串数组的创建 串转换函数 串操作函数
bin2dec 二进制串转换为十进制整数 int2str 把整数转换为串
char
把ASCII码及其他非数值类
数据转换成字符串
dec2base 十进制整数转换为X进制串
mat2str num2str
把数值矩阵转换为eval可调用 的格式
把数值转换为串
dec2bin 十进制整数转换为二进制串 setstr
单元数组(Cell Array)
单元数组的基本组分(Element)是单元(Cell ) (抽屉)。
每个单元本身在数组中是平等的,它们只能以 下标区分。
单元可以存放任何类型、任何大小的数组(如 任意维数值数组、字符串数组、符号对象等)。 而且,同一个单元数组中各单元中的内容可以 不同。
含义
使s里的英文字母全部小写 把串s1,s2等逐个写成行,形成多行数组,并删出 全空行
把串s1,s2等连接成长串 若串s1,s2相同,则判“真”给出逻辑1 字符串的对齐方式:或右对齐,或左对齐,或对中
逐行搜索串s2 ,给出以s1开头的那些行的行号 若串s1,s2的前n个字符相同,则判“真”给出逻辑 1 串s1中的所有出现s2的地方替换为s3 找出第一个间隔符(空格、制表位、回车符)前的 内容
(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<=‘z’); %找出串数组a中,小写字母的元素
位置
ascii_a(w)=ascii_a(w)-32; %大小写字母ASCII值差32,用数值
加法改变部分码值
char(ascii_a)
串操作函数(二)
指令 lower(s) str2mat(s1,s2,…)
strcat(s1,s2,…) strcmp(s1,s2) strjust(s) strmatch(s1,s2) strncmp(s1,s2,n)
strrep(s1,s2,s3) strtok(s)
strvcat(s1,s2,…)
str2mat :将字符串转换为含有空格的数组 Strvcat:创建字符串数组
这三个函数创建多行数组时,不必担心每行字 符数是否相等。它们总会按最长行设置第二维 的长度,其他行的尾部用空格填充。
转换函数产生数码字符串
最常用的数组/字符串转换函数int2str , num2str , mat2str 示例。
结构矩阵名.成员名=表达式
其中表达式应理解为矩阵表达式。
例如,建立一个含有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];
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
%把新的ASCII码翻成字符
ans =
THIS IS AN EXAMPLE.
复杂串数组的创建
多行串数组的直接创建 利用串操作函数创建多行串数组 转换函数产生数码字符串
多行串数组的直接创建
在直接创建多行串数组时,关键是要保 证同一串数组的各行字符数要相等,即 保证各行等长。为此,有时不得不通过 空格符的增减来调节各行的长度,使它 们彼此相等。
完成
单元数组的扩充
单元数组的扩充
利用cell指令创建单元数组 单元数组的“列”扩充和“行”扩充
单元数组的内容显示
cellplot能用图形形象化地表示单元数组的内 容。
celldisp显示单元数组的全部或部分内容 单元内编址(Content Addressing)方式也可
第三讲 字符串、单元 数组和结构数组
数组类型 基本组分
组分内涵
基本组分占 用字节数
数值数组 元素 双精度实数标量
8
或双精度复数标量
16
字符串 元素 字符
2
单元数组 单元 可以存放任何类型、 不定 任何大小的数据。
结构数组
结构
只有挂接在结构上 的“域”才能存放 数据。数据可以是 任何类型、任何大 小。
任何类型(数值、字符、单元、 结构等及其他对象)
“域(Field)” (字段) 如结构域B(1,2).f1
被标识的结构名 如:B(1,2)
带“域名”的标识结构名 如:B(1,2).f1
struct2cell把结构数组转换为单元 数组
结构矩阵的建立与引用
结构矩阵的元素可以是不同的数据类型,它能将一 组具有不同属性的数据纳入到一个统一的变量名下 进行管理。建立一个结构矩阵可采用给结构成员赋 值的办法。具体格式为
int2str :将整数转换为字符串 num2str :把数值转换为字符串 mat2str:将数组转换为字符串
串转换函数
指令
含义
abs
把串翻译成ASCII码
指令
含义
hex2dec 16-进制串转换为十进制整数
base2dec X-进制串转换为十进制整数 hex2num 16-进制串转换为浮点数
把ASCII码翻译成串
dec2hex double fprintf
十进制整数转换为十六进制 sprintf 串
把任何类型数据转换成双精 sscanf 度数值
把格式化数据写到文件或屏 str2num 幕
以控制格式把数值转换为串
在控制格式下把串转换为数 值 把串转换为数值
串操作函数(一)
指令 blanks(n) char(s1,s2,…) deblank(s) eval(s) eval(s1,sc)
单元数组的维数不受限制;单元数组对单元的 编址方法也有单下标编址和全下标编址两种。
单元标识寻访和内容编址寻访的不同
对单元数组来说,单元和单元里的内容是两个不 同范畴的东西。因此,寻访单元和寻访单元中的 内容是两种不同的操作。
为此,MATLAB设计了两种不同的操作:
单元外标识(Cell Indexing) 单元内编址(Content Addressing) 例: