第三章字符串、元胞、构架数组

合集下载

第三章 数组及其运算

第三章 数组及其运算

Logm(A) A的矩阵对数函数
%例二维数组、矩阵运算 A=[-4,-3,-2;-1,0,1;2,3,4];B=[1,3,2;3,2,5;2,5,7]; C=A+B*i %生成复数数组 C.',C' %非共轭转置和共轭转置
C= -4.0000 + 1.0000i -3.0000 + 3.0000i -2.0000 + 2.0000i -1.0000 + 3.0000i 0 + 2.0000i 1.0000 + 5.0000i 2.0000 + 2.0000i 3.0000 + 5.0000i 4.0000 + 7.0000i ans = -4.0000 + 1.0000i -1.0000 + 3.0000i 2.0000 + 2.0000i -3.0000 + 3.0000i 0 + 2.0000i 3.0000 + 5.0000i -2.0000 + 2.0000i 1.0000 + 5.0000i 4.0000 + 7.0000i ans = -4.0000 - 1.0000i -1.0000 - 3.0000i 2.0000 - 2.0000i -3.0000 - 3.0000i 0 - 2.0000i 3.0000 - 5.0000i -2.0000 - 2.0000i 1.0000 - 5.0000i 4.0000 - 7.0000i
>> a=3*ones(4,5) a= 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 >> b=diag(a) b= 3 3 3 3
>> zeros(5,6) %生成 行6列的全 阵 生成5行 列的全 列的全0阵 生成 ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

matlab第三章 字符串数组、元胞数组和构架数组

matlab第三章 字符串数组、元胞数组和构架数组
12
0.456 0.0185
字符串的应用:作出函数图形,并标注最大值点。 字符串的应用:作出函数图形,并标注最大值点。
y = e −2t sin(3t ) 0 ≤ t ≤ 10
%清除内存变量 clear %时间 t 从 0 到 10 每隔 0.01 均匀采样 t = 0 : 0.01 : 10; %对应每一个 t 求 y 值 y = exp( -2*t ) .* sin( 3*t ); %求最大值 y_max 及其下标 i_max [ y_max, i_max ] = max( y ); %横坐标字符串 t_text = [ 't = ', num2str( t(i_max) ) ]; %纵坐标字符串 y_text = [ 'y = ', num2str( y_max ) ]; max_text = char( 'Maxium', t_text, y_text ); %三行字符来标识最大值点 %图名称字符串 Title = [ 'y = exp( -2*t ) .* sin( 3*t )' ]; %新建一个图形窗 figure %画纵坐标为0的水平线 plot( t,zeros( size(t) ), 'k' ) %保持图形不被清除 hold on %蓝色实线画曲线 y(t) plot( t, y, 'b' ) plot( t(i_max), y_max, 'r.', 'MarkerSize', 20 ) %大小为 20 的红圆点标记最大值点 text( t(i_max)+0.3, y_max+0.05, max_text ) %在最大值点附近显示注释字符 %显示图名、横坐标名、纵坐标名 title( Title ); xlabel( 't' ) ylabel( 'y' ) %取消图形保持 13 hold off

第三章字符串、元胞、构架数组

第三章字符串、元胞、构架数组

可以看到这个构架数组不同域中存储的数据类型及维数是不同的,student.number和 中存放的是字符串,student.course中存放的是一个2×4的元胞数组, student.score存放的是一个2×4的数值数组。 如果想在构架数组student中增加一个 新的构架,那么只需要在构架数组名后添加下标,并向该构架的域中赋值即可。例 如,增加一个新构架来保存另一个学生的信息:
例题1直接用花括号创建
2.由各元胞创建-外标识元胞元素赋值法
例题3由各元胞内容创建元胞数组
例如4: 如何创建一个元胞数组,设girl为待建元胞数组的名称,则下面两组命令都可以完成任务。
3.2.2 元胞数组的内容显示
在MATALB命令窗口中输入元胞数组的名称,并不直接显示出元 胞数组的各元胞元素的内容值,而是显示各元胞元素的数据类 型和结构 ,单元素的元胞除外。 (1).使用celldisp命令显示元胞数组的内容
元胞数组的扩充、收缩和重组的方法和数值数组基本相同,下面以简单的指令形式表述。
3.3 构架数组 特点:
① 构架数组的基本组成是构架(Structure),以下标区分 各个构架; ② 构架必须划分成“域”后才能使用,每一个构架都包 含多个域(Fields) ; ③ 构架不能直接存放数据,数据必须存放在构架下面的 “域”中; ④ 构架的域可以存放任意类型、任意大小的数组(数值 数组、字符串数组、符号对象、元胞等); ⑤ 不同构架的同名域中可以存放不同类型的内容; ⑥ 构架数组可以是任意维的,可以利用单下标或全下标 寻址。
②获取构架数组中的域
获取构架数组中的域可以利用函数fieldnames来完成,其格式为 NAMES = fieldnames(struct_name)

数据结构PPT课件第3章_数组和字符串(ppt文档)

数据结构PPT课件第3章_数组和字符串(ppt文档)
= Loc(a[0][0]) + (i×n+j) ×C
9
[例] float a[3][4] Loc(a[1][2]) = Loc(a[0][0]) +(i×n+j) ×C = Loc(a[0][0]) +(1×4+2) ×4 = Loc(a[0][0]) +24
10
三维数组
多维数组元素在内存中的排序顺序为:第一维 的下标变化最慢,最右边的维下标变化最快。
a[1][0][0]→a[1][0][1]→a[1][0][2]→a[1][0][3] a[1][1][0]→a[1][1][1]→a[1][1][2]→a[1][1][3] a[1][2][0]→a[1][2][1]→a[1][2][2]→a[1][2][3]
11
三维数组a[m][n][p]中元素a[i][j][k]地址计 算公式为: Loc(a[i][j][k]) =Loc(a[0][0][0])+(i×n×p+j×p+k)×C
第三章 数组和字符串
3.1 数组 3.2 矩阵 3.3 字符串
1
3.1 数组
3.1.1 数组的存储和寻址 3.1.2 自定义数组类
3.1.3 动态数组
2
一维数组是若干个元素的有限序列。
元素本身就是一个数据结构。
一维数组的元素必须具有相同的类
型,每个数组元素都占据相同大小 的存储空间。
3
一维数组采用顺序存储结构。 每个元素都通过一个下标来指定,故一
23
template <class T> // 修改数组的大小 void Array<T>∷ReSize(int newSize) {

补 字符串数组、元胞数组和构架数组

补 字符串数组、元胞数组和构架数组
6






2014-5-11

三、构架数组
第3章 符号计算

构架数组也能存放各类数据,由结构变量和属性名组成,用指针
操作符“.”连接结构变量名和属性名。例如, parameter.temperature

parameter.humidity 则构架数组parameter由两个属性组成
2014-5-11
5

2014-5-11
补充章节 字符串数组、元胞数组和构架数组

二、元胞数组 元胞数组用于存放各类数据,由元胞元素和元胞内容两部分组成。 用花括号{ }表示元胞内容,用圆括号( )表示元胞元素。 元胞可以存放任何类型、任何大小的数组,同一个元胞数组中各 元胞的内容可不相同。 celldisp( )显示元胞数组内容 a{1,1}={'an example of cell array'}; a{1,2}={[1,2;3,4]}; a{2,1}=tf(1,[1,8]); a{2,2}={a{1,2};'this is an example'}; celldisp(a)

一、字符串数组


对数据可视化、图形用户界面GUI的制作都需要用到字符串数组
2、单行字符串数组的创建、访问、属性 (1)创建串数组 下面创建一个由19个字符组成的串,把这些字符放在单引号内。 a='this is an example.‘ b='这是一个算例。' (2)串数组的大小 中文字符、英文字母、空格和标点都占据一个字符元素位。 size(a) (3)串数组的访问 a14=a(1:4)
2

字符、元胞数组

字符、元胞数组



串操作函数(一) 含 义
创建n个空格串
把串s1,s2等逐个写成行,形成多行数组 删去串尾部的空格符 把串s当作MATLAB指令运行 把串s1当作MATLAB指令运行。若s1运行发生错误, 则运行sc 对输入宗量x,y等计算函数f 在较长串中,找出短串的起始字符的下标 s是字符串则判“真”给出逻辑1 以逻辑1指示s里文字符的位置 以逻辑1指示s里空格符的位置 MATLAB发出的最新错误信息
X-进制串转换为十进制整数 hex2num 二进制串转换为十进制整数 把ASCII码及其他非数值类 数据转换成字符串 十进制整数转换为X进制串 十进制整数转换为二进制串 十进制整数转换为十六进制 串 把任何类型数据转换成双精 度数值 把格式化数据写到文件或屏 幕 int2str mat2str num2str setstr sprintf sscanf str2num

元胞数组的内容显示


元胞数组的收缩和重组

元胞数组内容的调取


取一个元胞 取一个元胞的内容 取元胞内的子数组 同时调取多个元胞内容
第三节 构架数组



构架数组:与元胞数组一样,也能在一个数组里存放 各类数据。从一定意义上讲,构架数组组织数据的能 力比元胞数组更强、更富于变化。 构架数组的基本组分是构架(Structure)。数组中的 每个构架是平等的,它们以下标区分。构架必须在划 分域(Fields,字段)后才能使用。数据不能直接存 放于构架,而只能存放在域(字段)中。构架的域 (字段)可存放任何类型、任何大小的数组(如任意 维数值数组、字符串数组、符号对象等)。而且,不 同构架的同名域(字段)中存放的内容可以不同。 构架数组的维数不受限制。构架数组对构架的编址方 法也有单下标编址和全下标编址两种。

北大数据结构课件,内部资料,精品

北大数据结构课件,内部资料,精品

第三章字符串任课教员:张铭、赵海燕、冯梅萍、王腾蛟/mzhang/DS/北京大学信息科学与技术学院©版权所有,转载或翻印必究主要内容3.1 字符串抽象数据类型3.2 字符串的存储结构和类定义 3.3 字符串运算的算法实现3.4 字符串的模式匹配3.1字符串抽象数据类型3.1.1 基本概念3.1.2 String抽象数据类型3.1.1 基本概念字符串,由0个或多个字符的顺序排列所组成的复合数据结构,简称“串”。

串的长度:一个字符串所包含的字符个数。

空串:长度为零的串,它不包含任何字符内容。

3.1.1.1字符串常数和变量字符串常数例如:"\n"字符串变量3.1.1.2 字符字符(char) :组成字符串的基本单位。

在C和C++中单字节(8 bits)采用ASCII码对128个符号(字符集charset)进行编码3.1.1.3 字符的编码顺序为了字符串间比较和运算的便利,字符编码表一般遵循约定俗成的“偏序编码规则”。

字符偏序:根据字符的自然含义,某些字符间两两可以比较次序。

其实大多数情况下就是字典序中文字符串有些特例,例如“笔划”序3.1.1.4 C++标准string标准字符串:将C++的<string.h>函数库作为字符串数据类型的方案。

例如:char S[M];串的结束标记:'\0''\0'是ASCII码中8位BIT全0码,又称为NULL符。

3.1.1.4 C++标准string(续)1. 串长函数int strlen(char*s);2. 串复制char *strcpy(char*s1, char*s2);3.串拼接char *strcat(char*s1, char *s2);4.串比较int strcmp(char*s1, char *s2);3.1.1.4 C++标准string(续)5.输入和输出函数6.定位函数char *strchr(char*s, char c); 7.右定位函数char *strrchr(char*s, char c);3.1.1.4 C++标准string(续)3.1.2 String抽象数据类型字符串类(class String): 不采用char S[M]的形式而采用一种动态变长的存储结构。

杭州电子科大,MATLAB经典教程。第三章 数据类型

杭州电子科大,MATLAB经典教程。第三章 数据类型

例子3-13 复杂的关系运算。 在MATLAB命令行窗口中,键入下面的指令: >> A = reshape(-4:4,3,3) A= -4 -3 -1 0 2 3
-2
1
4
>> B = ~(A>=0) (提问:输出的结果是什么?)
3.3.4 运算符的优先级
M语言的运算符和普通的高级编程语言类似,也具有 相应的计算优先级:
note: 1) eps、realmax和realmin三个常量具体的数值与运行 MATLAB的计算机相关,不同的计算机系统可能具有不同 的数值。 2) MATLAB的常量数值是可以修改的。例如,pi=100, 这样pi这个常量的数值就变成了100。但是,如果用clear指 令清除变量后,pi将变成原有的常量数值。
例子3-10 逻辑运算示例。
在MATLAB命令行窗口中,键入下面的指令:
>> a = eye(3);
>> b = a;b(3,1) =1;
>> a && b (标量)
??? Operands to the || and && operators must be
convertible to logical scalar values. >> a & b 例子3-11 函数all和any使用示例。
例子3-2 使用不同的数据类型。 在MATLAB命令行窗口中,键入下面的指令: >> a = [ 1 2 3]; >> b = [ 3 4 5]; >> c = a+b; >> int16(a)+int16(b) ??? Error using ==> + Function '+' is not defined for values of class 'int16'. note:MATLAB系统默认的运算都是针对双精度类型,所 以在进行两个int16类型的变量加法时,MATLAB报告了相 应的错误。(解决方法:计算前后进行类型转化。)

南京信息工程大学2019考研大纲:F39计算机程序设计

南京信息工程大学2019考研大纲:F39计算机程序设计

南京信息⼯程⼤学2019考研⼤纲:F39计算机程序设计 考研⼤纲频道为⼤家提供南京信息⼯程⼤学2019考研⼤纲:F39计算机程序设计,⼀起对照⼤纲复习吧!更多考研资讯请关注我们⺴站的更新! 南京信息⼯程⼤学2019考研⼤纲:F39计算机程序设计 科⺫代码:F39 科⺫名称:计算机程序设计 第⼀部分课程⺫标与基本要求 ⼀、课程⺫标 MATLAB是⺫前海洋学界⼲泛使⽤的⼀款数据处理与显⽰的软件系统。

作为海洋学及其相关专业学⽣的常⽤软件,MATLAB具有⼗分重要的实⽤价。

该课程旨在使学⽣系统地了解MATLAB软件的基本操作技巧,切实地掌握⽤该软件制图的基本⽅法,初步具备编程绘图的能⼒,为将来专业知识学习与科研⼯作奠定基础。

⼆、基本要求 了解MATLAB正常运⾏所必须具备的基础条件,安装⽅法和启动环境;MATLAB的⾯向对象编程理念;程序调试和剖析;了解与物理海洋学相关丰富函数库; 理解数值数组和数组运算的核⼼内容;理解数组操作过程和语法特点,并能熟练运⽤;理解脚本、函数、函数句柄的创建和使⽤;理解离散数据表⽰成图形的基本机理; 掌握⾼度集成的Desktop操作桌⾯的功能和使⽤⽅法;掌握MATLAB交互界⾯的基本功能和操作⽅法。

掌握⼀、⼆维数值数组的创建、寻访;数组运算和矩阵运算的区别;实现数组运算的基本函数;多项式的表达、创建和操作;常⽤标准数组⽣成函数和数组构作技法;⾼维数组的创建、寻访和操作;⾮数NaN、“空”数组概念和应⽤;关系和逻辑操作;掌握简单的脚本编写,函数调⽤;掌握曲线、曲⾯绘制的基本技法和指令;特殊图形的⽣成和使⽤⽰例;学会使⽤线型、⾊彩、数据点标记凸现不同数据的特征;掌握⽐较常⽤的海洋学绘图函数库m_map中简单函数的调⽤; 第⼆部分内容与考核⺫标 第⼀章. MATLAB基础准备及⼊⻔ (1)了解MATLAB正常运⾏所必须具备的基础条件; (2)理解安装⽅法和启动环境; (3)掌握⾼度集成的Desktop操作桌⾯的功能和使⽤⽅法; 第⼆章. 数值数组及其运算 (1)了解MATLAB“⾯向对象”的特征; (2)理解数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核⼼内容; (3)掌握并会应⽤⼀、⼆维数值数组的创建、寻访;数组运算和矩阵运算的区别;实现数组运算的基本函数;多项式的表达、创建和操作;常⽤标准数组⽣成函数和数组构作技法;⾼维数组的创建、寻访和操作;⾮数NaN、“空”数组概念和应⽤;关系和逻辑操作。

第三讲字符串数组、细胞数组和构架数组

第三讲字符串数组、细胞数组和构架数组

-5-Biblioteka S3 = 这 字符 串数组 由 4 行组成 >> size(S3) ans = 5 5 在用这三个函数创建多行串数组时, 不必担心每行字符数是否相等。 它们总会按最长行 设置第二维的长度,其他行的尾部用空格填充。 三、转换函数产生数码字符串 例 3.1.5 常用的转换函数 int2str,num2str,mat2str 示例 (1)int2str 把整数数组转换成串数组(非整数将被四舍五入后再转换) >> A=eye(2,4) % 生成一个(2 × 4)数值数组 A= 1 0 0 0 0 1 0 0 >> A_str1=int2str(A) % 转换成(2 × 10)串数组 A_str1 = 1 0 0 0 0 1 0 0 >> size(A_str1) % 串数组 A_str1 的“大小” ans = 2 10 (2)num2str 把非整数数组转换成串数组(常用于图形中,数据点的标识) >> rand('state',0) % 把均匀分布伪随机发生器置为 0 状态 >> B=rand(2,4) % 生成(2 × 4)的均匀分布随机数值矩阵 B= 0.9501 0.6068 0.8913 0.4565 0.2311 0.4860 0.7621 0.0185 >> B3=num2str(B,3) % 保持 3 位有效数字,转换为串 B3 = 0.95 0.607 0.891 0.456 0.231 0.486 0.762 0.0185 (3)mat2str 把数值数组转换成输入形态的串数组(常与 eval 指令配用) >> B_str=mat2str(B,4) % 保持 4 位有效数字,转换为“数组输入形式”串 B_str = [0.9501 0.6068 0.8913 0.4565;0.2311 0.486 0.7621 0.0185] >> Expression=['exp(-',B_str,')'] % 相当于指令窗写一个表达式 exp(-B_str) Expression = exp(-[0.9501 0.6068 0.8913 0.4565;0.2311 0.486 0.7621 0.0185]) >> eval(Expression) % 把 exp(-B_str)送去执行

matlab5

matlab5

字符串数组
命令如下: ch=‘ABc123d4e56Fg9’; subch=ch(1:5) %取子字符串 revch=ch(end:-1:1) %将字符串倒排 k=find(ch>=‘a’&ch<=‘z’); %找小写字母的位置 ch(k)=ch(k)-(‘a’-‘A’); %将小写字母变成相应的 大写字母 char(ch) length(k) %统计小写字母的个数
• • • • • • • • • • a='Matlab6';b=' introduces new data types:'; c1='multidimensional array'; c2='User-definable data structure'; c3='cell arrays'; c4='Character array'; c=char(c1,c2,c3,c4); %生成多行字符串数组 C={a;b;c}; %创建元胞数组 disp([C{1:2}]) %元胞数组的寻访 disp(' ') disp(C{3})
构架数组
构架数组
构架数组的元素可以是不同的数据类型,它能将一组 具有不同属性的数据纳入到一个统一的变量名下进行 管理。 构架数组的基本组分是构架。 构架必须划分成域后才能存放数据,具体格式为 构架.域=表达式 %表达式应理解为矩阵表达式。 构架数组可以是一维的,二维的,也可以是高维的。 构架数组的编址方法也有单下标编址和全下标编址两 种。
字ቤተ መጻሕፍቲ ባይዱ串数组
setstr %把ASCII码翻译成串 abs %把串翻译成ASCII码 double %把任何数据类型转化成双精度数值 char %把ASCII码及其他非数值类数据转换成字符 串

matlab第3章字符串、元胞与构架

matlab第3章字符串、元胞与构架

16
ห้องสมุดไป่ตู้
cell_name是待建元胞数组的名称,value 是元素的具体内容。cell_name(i, j)和cell_ name {i, j}的意义是不同的cell_name(i, j)表示 元胞数组的第i行第j列个元素,被称为“元胞外 标志(cell indexing)”;cell_name{i, j}表示元胞 数组第i行第j列个元素中的内容,被称为“元胞 内 编址(content addressing)”。 下面说明如何创建一个如图3.2所示的元 胞数组,设student为待建元胞数组的名称,则 下面两组命令都可以完成任务。
第3章 字符串、元胞与构架 数组
1
本章学习目标
掌握字符串数组、复杂字符串数组的创建
及串转换函数与串操作函数 掌握元胞数组的创建,元胞数组的显示、 寻访、扩充、收缩和重组方法及元胞数组 相关函数 掌握构架数组的创建、构架数组的相关函 数及构架数组的操作 掌握几种数组的转换
2
主要内容


8
有时需要由小串构成长串,这时可以把小串放在 [ ]中,例如 >> S_S1=[S,‘ ’,S1] %这里‘ ’是一个空格串,单引
号对中包含一个空格符,空 串‘’不包含空格符,它们两个 在MATLAB中是不同的
S_S1 = Hello World 芝麻开门
9
2. 复杂字符串数组的创建
①直接创建多行字符串数组
13
④利用元胞数组创建复杂字符串 前面已经介绍了3种常用的创建复杂字符 串数组的方法,还可以利用元胞数组创建复 杂字符串,这部分内容放在3.4节介绍。 注意:MATLAB语言中没有强调字符标量 和字符串的区别,例如 >> b=‘A’ %给变量b赋字符标量A,相当 于创建一个1×1的字符串

字符串、胞元构架数组

字符串、胞元构架数组
0.6 0.5 maximum t=0.33 y=0.4321 0.4 0.3 y
y=exp(-2t)*sin(3t)
0.2
0.1
0
-0.1
0
1
2
3
4
5 t
6
7
8
9
10
胞元数组 胞元数组的构成?
胞元和胞元内容两部分。 该数组的基本组成部分是胞元(cell),每 个胞元本身在数组中是平等的,它们只能以下 标来区分。同一个胞元数组中不同的胞元可以 存放不同类型和不同大小的数据,如任意维数 组、字符串数组、符号对象等。
构架数组
【例6】通过温室数据(包括温室名、容积、温度、湿度等)演示:构架数 数 组的创建和显示。
(1)直接对域赋值产生“单构架”,1*1构架数组 )直接对域赋值产生“单构架” 构架数组 ► clear ► =‘一号房 一号房’; %G构架的 构架的name域存放字符串 一号房 构架的 域存放字符串 ► G.volume=2000; %G构架的 构架的volume域存放数值 构架的 域存放数值 ► G.temperature=[31.2,30.4,31.6,28.7]; %G构架的 构架的temperature域存放一维数值数组 构架的 域存放一维数值数组 G.humidity=[62.1,59.5,57.7,61.5;63,60,58.1,62.3]; (2)向第二个构架的域赋值,形成构架数组, )向第二个构架的域赋值,形成构架数组, ► G(2).name='二号房 二号房'; 二号房 ► G(2).volume=2400;
胞元数组 胞元和胞元内容是两个不同的概念?
A(2,3)指A胞元数组中的第2行第3列的胞元。 ► A{2,3}指A胞元数组中第2行第3列中胞元中存 放的内容。

第三章 数组和字符串(数据结构word版课件)

第三章 数组和字符串(数据结构word版课件)

第三章数组和字符串§3.1 数组3.1.1 数组的存储和寻址一个一维数组就是若干元素的一个有限序列,而其每个元素都通过一个下标来指定,且元素本身就是一个数据结构(或是整型、逻辑型、字符型等简单数据类型,或是数组、记录等复杂数据类型)。

对一维数组唯一的限制是所有的元素都具有相同的类型,并占据相同大小的存储空间。

因数组元素要通过数组名及紧跟其后的方括号中的下标来确定,故一个一维数组就对应一个下标函数。

下面我们讨论数组在计算机存储器中的存储方式。

因为通常不进行数组的插入或者删除操作,所以在内存储器中我们选择顺序存储方式实现数组的存储。

在内存中以“线性式”的方式组织数组很方便。

设一维数组A[n]存放在n个连续的存储单元中,每个数组元素占一个存储单元(不妨设为C个连续字节)。

如果数组元素A[0]的首地址是L,则A[1]的首地址是L+C,A[2]的首地址是L+2C,… …,依次类推,对于01i n有:≤≤-Loc (A[i])=Loc (A[0])+i⨯C对于高维数组(多维的数据结构)之存储,可将其转化为一维来实现。

因此必须对高维数组元素的存放次序进行约定。

高维数组通常有两种存放次序约定——按行优先顺序和按列优先顺序.个行向量之后。

换句话说,就是用一维数组的存储结构来解决高维数组的存储问题。

设A 为n 维数组12[][][]n a m m m ,其每个元素占C 个字节,且第一个元素的地址为(0,0,,0)Loc ,若要算出该数组的任一个元素12[][][]n a i i i 的地址,可将n 维数组12[][][]n a m m m 可考虑为如下一维数组11[]b m =( 2[0][][]n a m m ,2[1][][]n a m m ,…,12[1][][]n a m m m - )设该数组的每个元素占C 1个字节。

显然,11[]b m 包含的数组元素实际与一个n -1维数组(包含23n m m m ⨯⨯⨯个12[][][]n a m m m 的数组元素)相同,于是我们有:123n C m m m C =⨯⨯⨯⨯ .又可将12[][][]n a k m m (110,...,1k m =-)看作如下一维数组122[]k b m =(13[][0][][]n a k m m , 13[][1][][]n a k m m , …,123[][1][][]n a k m m m -)设它的每个元素占C 2个字节,显然C 2 = m 3⨯m 4 ⨯⋯⨯m n ⨯C ;如此类推,设一维数组1221...1[]n n k k k n b m ---=(12[][][0][]n n a k k m -,12[][][1][]n n a k k m -,…,121[][][1][]n n n a k k m m --- )设它的每个元素占1-n C 个字节,则C n -1=m n ⨯ C .故12[][][]n a i i i 的存储地址为:12211(,,,)(0,,,)n n Loc i i i Loc i i i C =+⨯32211(0,0,,,)n Loc i i i C i C =+⨯+⨯+1111(0,,0)n n n Loc i C i C i C --=+⨯+⨯++⨯112(0,,0)n n n n Loc i C i C m i C m m -=+⨯+⨯⨯++⨯⨯⨯⨯(){}111(0,,0)k p n k n p k n Loc i m i C =-=+=+⨯+⨯∑∏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

③向构架数组中添加新的域
有时需要向构架数组添加新的域来存储信息。比 如,要向构架数组student中添加一个域department 来存储学生的院系信息,可以按如下方式进行 >> student(1).department='信息工程' student = 1x49 struct array with fields: number name course score department 可以看到所有的构架中都添加了
执行字符串
如果需要直接“执行”某一字符串,可以使用eval命令,效果就 如同直接在MATLAB命令窗口内输入此命令。
显示字符串
字符串可以直接使用disp命令显示出来,即使后面加分号(;)也 显示。
例子:
3.2 元胞数组
特点: (1)元胞数组的基本组成单元是元胞(cell),元胞在数 组中以下标 来进行区分; (2)元胞可以是任何类型、任意大小的数组(如:数值数 组、字符串数组、符号对象等); (3)一个元胞数组中各个元胞可以是不同类型的内容; 元胞数组的维数不受限制,可以采用单下标或全下 标寻址; 注意: 元胞和元胞里的内容是两个不同范畴的东西,分别 通过“元胞外标识(Cell Indexing)”和”元胞内编址 (Content Addressing)”来寻访。“外标识的元胞元素” 用圆括号对(),而“编址元胞元素内涵”用花括号对{}, 如A(2,3)表示元胞数组A第2行第3列的元胞,A{2,3}则表 示元胞数组A第2行第3列的元胞中的内容。
例题:串数组的属性和标识和操作 程序:
3.1.4
复杂串数组的创建
一、直接创建多行串数组
1.直接创建多行串数组时必须注意:和数值数组一样,二维字 符 数组每一行必须具有相同的长度。若其中一行的长度短于其他 行,则此字符数组是无效的。 例题:
2. 利用串操作函数创建多行串数组 利用专门的str2mat、strvcat和char函数可以构造出字符串 数组,而不必考虑每行的字符数是否相等,总是按最长的设置,不 足的末尾用空格补齐 例题:
查看该构架数组
可以看到大小为1×50,当然很多构架的域都没 有赋值,是空数组。例如 >> student(2) ans = number: [ ] name: [ ] course: [ ] score: [ ] 要想从构架数组中删除一个构架,只需向该构架 赋空值即可。例如 >> student(50)=[ ] student = 1x49 struct array with fields: number 上式表示把构架student(50)赋空值,可以看 name 到构 course 架数组大小变为1×49。 score
②获取构架数组中的域
获取构架数组中的域可以利用函数fieldnames来完成,其格式为 NAMES = fieldnames(struct_name)
例如: 获取构架数组student的域的语句如下 >>NAMES = fieldnames(girl) NAMES = 'number' 'name' 'course' 'score'
3.1 2 字符串数组
1.字符串与数值是两种不同的数据类型,它们的创建方式也就 不同。数值变量是通过在指令窗中数字赋值创建的。而字符变 量的方式是:把待建的字符串放在“单引号”对中再按回车
例如:A='hello'
Whos 观察内存变量
class(A)判断A的类型
ischar(A)检测是否为字符串
int2str num2str mat2str
例题:最常用的数组/字符串转换函数int2str , num2str , mat2str
一.字符串转换函数
二.字符串操作函数
① length:用来计算字符串的长度(即组成字符的个数)。 ② char(s1,s2,…):将串s1,s2,…逐个写成行,形成多 行数组。 ③ class或ischar:用来判断某一个变量是否为字符串。 class函数返回char则表示为字符串,而ischar函数返 回1表示为字符串。 ④ strcmp(s1,s2):比较字符串s1和s2是否相同。返回值 如果为1则相同,为0则不同。 ⑤ findstr(s1,s2):寻找在某个长字符串s1中的子字符 串s2,返回其起始位置。 ⑥ deblank(s ): 删除字符串尾部的空格。 执行字符串 7 如果需要直接“执行”某一字符串,可以使用eval命 令,效果就如同直接在MATLAB命令窗口内输入此命令。
3.21元胞数组的创建
一.常用的创建元胞数组的方法有两种分别是: 对元胞元素直接赋值创建; 利用函数cell创建。 ①对元胞元素直接赋值创建元胞数组的格式有两种,cell_name(i, j)={value}或cell_name {i, j}=value。 二. 两者的区别如下: cell_name是待建元胞数组的名称,value 是元素的具体内容。cell_name(i, j)和cell_ name {i, j}的意义是不同的cell_name(i, j)表示 元胞数组的第i行第j列个元素,被称为“元胞外 标志(cell indexing)”;cell_name{i, j}表示元胞 数组第i行第j列个元素中的内容,被称为“元胞内 编址(content addressing)”。 例题如下:
可以看到构架数组student域的数目保持不变,接 着具体查看两个构架student(1)和student(2)的 department域 >> student(1).department ans = Class: '0901' >> student(2).department ans = [] 可以看到两个构架的department域是不同的, student(1)的department域带有子域Class,而 student(2)的department域为空值。
利用串转换函数产生数码字符串 ① 常用的数组/字符串转换函数有int2str , num2str , mat2str 。 ② int2str:把整数数组转换成字符串数组,非整数将被四舍五入 后再转换; ③ num2str :把非整数数组转换成字符串数组,常用于图形中数 据点的标识; ④ mat2str:把数值数组转换成字符串数组 例题如:
例题2
2.使用cellplot命令以图形显示元胞数组的内容
3.2.3 元胞数组的内容获取
1. 取元胞数组的元素内容
用花括号寻访 取A(1,2)元 胞元素的内容 取A(1,2) 元胞元素的 数组第二行 第二列的内 容
2. 取元胞数组的元素
3.使用deal函数取多个元胞元素的内容
4. 元胞数组的扩充、收缩和重组
本章主要知识结构
◇字符串数组(Character String Array) 字符串数组的属性和标识 复杂字符串数组的创建 串转换函数和串操作函数 ◇元胞数组(Cell Array) 元胞数组的创建 元胞数组内容的显示 元胞数组内容的提取 元胞数组的扩充、收缩和重组 ◇构架数组(Structure Array) 构架数组的创建 构架数组数据的获取和设置 构架数组域的获取 ◇数据类型归纳
3.3.1. 构架数组的创建
创建构架数组的方法有两种:直接对“域”赋值创建构 架数组;利用构造函数struct创建构架数组。 ①直接对“域”赋值创建构架数组: 通过对构架数组的各个域进行赋值,即可创 建构架数组,其格式为: struct_name(record index).field_name=data 创建单构架数组时,下标(record index)可以 省略。 例如:
例题1直接用花括号创建
2.由各元胞创建-外标识元胞元素赋值法
例题3由各元胞内容创建元胞数组
例如4: 如何创建一个元胞数组,设girl为待建元胞数组的名称,则下面两组命令都可以完成任务。
3.2.2 元胞数组的内容显示
在MATALB命令窗口中输入元胞数组的名称,并不直接显示出元 胞数组的各元胞元素的内容值,而是显示各元胞元素的数据类 型和结构 ,单元素的元胞除外。 (1).使用celldisp命令显示元胞数组的内容
3.13
串数组的属性和标识
1. 创建串数组 必须将待建字符放在“单引号对”中,当串中本身包含单引 号时,每个单引号符用“连续的两个单引号”表示。 2. 串数组的大小 size指令可获得串数组的大小。串中的每一个字符,包括中 英文字符、空格、标点都算一个元素。
3. 串数组的元素标识 按从左至右的顺序依次用1、2、3、4… 等标识元素在串中 的位置。 4. 串数组的ASCII码 指令abs和double可以显示串数组对应的ASCII码数值数组, 指令char则可把ASCII码数值数组转换成串数组。
例题2中文字符串数组 程序: >> A='这是一个算例。';%创建中文字符串 A_s=size(A) %串数组的大小 A56=A([5 6]) %取串的子数组 ASCII_A=double(A) %获取ASCII码 char(ASCII_A) %把ASCII码翻译成字符
5. 字符串ASCII码数组的操作 可以对ASCII码数组进行数值数组的各种运算。但其结果就变成 一般数值向量的运算,而不再是字符串的运算。 注意: 必须在英文状态下输入“单引号对”。 将多个字符串变量直接用“,”连接,可构成一个较长的新字符串变 量。
3.
3.1.5串转换函数和串操作函数
① 数码字符串对于图形的标注是非常有用的。在图形 的标注中,字符串中往往包含有数值,用转换函数 把其中的数值转换成字符串。 ②数值和字符在MATLAB中是两个完全不同的概念,而 且存储方式也有很大的区别。在MATLAB内部,数值 1和字符串“1”是完全不同的。数值1采用双精度进 行保存,占用8个字节(64位),而字符串“1”则只 用两个字节来保存它的ASCII码值。MATLAB提供了一 些在数值和字符串之间进行转换的函数 最常用的数组/字符串转换函数有:
相关文档
最新文档