当前位置:文档之家› MATLAB实用教程

MATLAB实用教程


符串表示的双精度值。 int2str函数将整型数据转换为字符串型数据。 num2str函数对输出字符串的格式提供了更多控 制,该函数的第2个变量是可选的,它设置输 出字符串的位数,或指定一个实际的格式。 mat2str函数将数组转换为字符串。 mat2str函数将返回一个包含文本的字符串,该 文本在命令行中输入,用于创建矩阵。
矩阵
构造矩阵的方法: 简单的创建方法 构造特殊矩阵 聚合矩阵 组合不同类型的数据
用简单方法构造矩阵
MATLAB中创建矩阵最简单的方法是使用符号 []。在方括号内输入多个元素可以创建矩阵的 一个行。用逗号或空格把每个元素间隔开。如 果想开始一个新行,用分号终止当前行:
A = [row1; row2; ...; rown]
多维数组
用索引生成多维数组
用特殊函数生成多维数组 用cat函数生成多维数组
用索引生成多维数组
创建多维数组的方法之一是先创建一个 二维数组,然后扩展它。如:
A = [5 7 8; 0 1 9; 4 3 6];
A是一个3×3的数值,即它的行维和列 维都是3。给A添加第三维。
A(:,:,2) = [1 0 4; 3 5 6; 9 8 7]
下面创建一个3行5列的数值矩阵。
A = [12 62 93 -8 22; 16 2 87 43 91; -4 17 -72 95 6] A= 12 62 93 -8 22 16 2 87 43 91 -4 17 -72 95 6
构造特殊矩阵
MATLAB提供了多个创建不同矩阵的函数,如下表所示。 函 数 功 能
用特殊函数生成多维数组
可以使用与生成二维数组相同的方式, 用randn,ones和zeros函数等生成多维数 组。提供的每个变量表示生成的数组中 对应维的大小。如:要创建一个正态分 布随机数的4×3×2的数组,可以输入:
B = randn(4,3,2)
要生成一个元素均为同一常数的数组, 使用repmat函数。如:
A=9 A=
9
变量的数据类型
数 组
逻辑型
字符型
数值型
单元数组
结构数组
函数句柄
定制类 int8, uint8 Single Double
Java类
int16, uint16
int32, uint32
数组和矩阵
MATLAB中,所有数据都用数组 或矩阵形式进行保存。 数组 矩阵
数组
构造数组的方法: 直接构造法 增量法 linspace函数法
直接构造数组
在MATLAB中构造数组,只需要用空格 或逗号间隔数组元素,然后用方括号括 起来就行了。如 x=[0 2 3 6 7 8] 或 x=[0,2,3,6,7,8] 就构造了一个有6个元素的数组x。
用增量法构造数组
利用MATLAB提供的冒号运算符 (first:step:last)可以生成数组。数组中的 元素按顺序从first一直到last,增量为step。 (2:3:14) 如果不指定增量step,则按升序生成数 组,后面的数比它前面第一个数大1。 (2:13) 如果要求生成降序排列的数组,指定一 个负的增量。 增量可以是整数,也可以是小数。
用linspace函数构造数组
用linspace函数构造数组,需要指定首 尾值和元素总个数。基本形式是: x=linspace(first,last,num) 其中,first,last和num分别为x数组的首尾 元素和元素个数。如 x=linspace(0,10,5) x= 0 2.5000 5.0000 7.5000 10.0000
B = repmat(5,[3 4 2])
用cat函数生成多维数组
cat函数是创建多维数组的一种简单方式, 它按指定的维数将多个数组聚合到一起, 其调用格式为:
B = cat(dim,A1,A2...)
其中A1,A2等是进行聚合的数组,dim 是维数。
结构
创建结构数组
获取结构数组中的数据 数组的大小
绘图功能强大
可扩展性能
MATLAB的桌面环境
启动按钮
命令窗口 命令历史窗口
工作空间窗口
当前目录浏览器
主界面
当前目录浏览工具 工作空间窗口
命令窗口
启动按钮
命令历史窗口
MATLAB的帮助系统
帮助浏览工具
help函数和doc函数
第2章 数据类型
常数和变量 数组和矩阵 字符串 多维数组 结构 单元数组 函数句柄
操作字段
结构的嵌套
创建结构数组
使用赋值语句
可以通过将数据赋给单独的字段来生 成一个简单的1×1结构数组。 使用struct函数 可以用struct函数预分配一个结构数组。 其基本形式为:
str_array = struct('field1',val1,'field2',val2, ...)
构造矩阵时,如果矩阵的数据类型不同,则 MATLAB会自动对某些元素进行类型转换,然 后生成的矩阵具有相同的类型。 用一个高精度的矩阵和一个低精度的矩阵构 造新矩阵时,新矩阵是低精度型的。例如,聚 合double型和single型的矩阵时,总是生成 single型的矩阵。MATLAB会先将double型元素 转换为single型。
使用编号索引获取矩阵的元素
利用编号和索引,可以获取MATLAB矩 阵的元素。 要引用矩阵中的特殊元素,用下面的语 法指定它的行号和列号,其中A是矩阵变 量。按先行后列的顺序指定。 A(row, column)
使用线性索引获取矩阵的元素
MATLAB保存矩阵中的数据时是作为一个元素 列保存。这个元素列又是由矩阵中的所有列组 成的,后一列元素按先后顺序添加到前一列元 素的最后。所以,矩阵A
其中,变量为字段名和它们的对应值。
单元数组
创建单元数组
获取单元数组的数据 删除单元和重塑单元数组
创建单元数组
用赋值语句创建单元数组
可以使用单元索引和内容索引两种方 式创建单元数组。 用cell函数创建单元数组 使用cell函数,可以预分配指定大小的 空单元数组,如,下面的语句创建一个 空的单元数组:
聚合矩阵的特殊函数
下表列出了聚合矩阵的一些特殊函数。
函 数 cat 描 沿指定的维聚合矩阵 述
horzcat
vertcat repmat
水平聚合矩阵
垂向聚合矩阵 通过复制和叠置矩阵来创建新矩阵
blkdiag
用已有矩阵创建块对角矩阵
获取矩阵的元素
使用编号索引
使用线性索引 使用冒号
使用end关键字
利用冒号本身可以引用矩阵某行或列的 所有元素。使用下面的语法,可以计算 4×4的魔方矩阵A中所有元素的和。
sum(A(:, 2)) ans = 34
将冒号进行索引,可以引用整个矩阵 中的所有元素。本例显示矩阵A中的所有 元素,按列序返回它们:
A(:)
使用end关键字获取矩阵的元素
利用end关键字可以指定矩阵某维的最后 一个元素。它适用于不知道矩阵有多少 行或多少列的情况。例如,可以用下面 的语句进行值的替换:
A = ones(2, 5) * 6; % 2×5的矩阵,元素为6 B = rand(3, 5); % 3×5的矩阵,元素为随机数 C = [A; B] % 垂向聚合A和B 注意:在每一条程序后面,有分号“;”,则该语句求出的内容不 显 示在屏幕上;若没有分号,则所求内容会显示出来
组合不同类型的数据
inf
NaN
无限值。类似n/0的表达式生成的结果为inf,其中n为非0实数
表示不合法的数值值,非数值。类似0/0和inf/inf的表达式生成的结 果,与NaN有关的算术运算结果,以及n/0,n为复数时的计算结果 都是NaN 计算机类型
computer
version
MATLAB版本字符串
变量
变量名 MATLAB变量名的第1个字符必须是字母,后面可 以跟字母、数字和下划线的任何组合。 注意:MATLAB中变量名有大小写区分,所以A和 a是不同的变量。 创建变量 在MATLAB中创建变量很简单,不必声明变量的数据 类型。例如在命令窗口键入下面的命令行就可以创建 一个A变量。
ones
zeros eye diag magic rand randn randperm
创建一个所有元素都为1的矩阵
创建一个所有元素都为0的矩阵 创建对角线元素为1,其他元素为0的矩阵 根据矢量创建对角矩阵 创建一个方形矩阵,其中行、列和对角线上元素的和 相等 创建一个矩阵或数组,其中的元素为服从均匀分布的 随机数 创建一个矩阵或数组,其中的元素为服从正态分布的 随机数 创建一个矢量(1×n的矩阵)
两个通用的聚合方法是使用MATLAB聚 合运算符([])或sprintf函数。 用strcat函数也可以把两个或更多字符 串组合在一起。
字符串的搜索和替换
strrep函数进行标准的搜索和替代操作。 findstr函数把子字符串的起始位置返回到一个
更长的字符串中。 strtok函数在输入字符串中第一次发现间隔符时 返回间隔符前面的字符,可用该函数把句子分 离成单词。 strmatch函数在字符串或字符串单元数组的整 个行中进行查找,看有没有以给定字符序列打 头的字符串,它返回以该字符串打头的行的行 号。
B = cell(2,3);
然后可以用赋值语句填充B单元。
函数句柄
函数句柄是一种MATLAB数据类型, 它包含用于引用函数的信息。创建函数 句柄时,MATLAB在句柄中保存所有与 要运行的函数有关的信息。 第3章将对函数句柄进行比较详细的介 绍。
常数
下表列出了MATLAB提供的一些内部函数。
常数 ans eps 返回值 默认变量名,保存最近的结果。如果不给表达式指定一个输出变量, MATLAB会自动将结果保存到ans变量中 浮点相对精度。是MATLAB用于计算的容限
相关主题