1、MATLAB程序设计 第二讲 2 1字符串在MATLAB中 字符串是用单撇号括起来的字符序列 c Shuxuekexuexueyuan MATLAB将字符串当作一个行向量 每个元素对应一个字符 其标识方法和数值向量相同 也可以建立多行字符串矩阵 d abcde 12345 字符串是以ASCII码形式存储的 abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵 相反 char函数可以把ASCII码矩阵转换为字符串矩阵 例2 13建立一个字符串向量 然后对该向量做如下处理 1 取第1 5个字符组成的子字符串 2 将字符串倒过来重新排列 3 将字符串中的小写字母变成相应的大写
2、字母 其余字符不变 4 统计字符串中小写字母的个数 命令如下 ch ABc123d4e56Fg9 subch ch 1 5 取子字符串revch ch end 1 1 将字符串倒排k find ch a 将小写字母变成相应的大写字母char ch length k 统计小写字母的个数 与字符串有关的重要函数 int2str把整数数组转换成字符串数组 num2str把非整数数组转换成字符串数组 char把任何类型数据转换成字符串 str2num把字符串转换成数值等 例利用int2str把整数数组转换成字符串数组A eye 2 4 A1 int2str A A1 10000100 2 2单元矩阵1
3、 单元矩阵的建立与引用建立单元矩阵和一般矩阵相似 只是矩阵元素用大括号括起来 可以用带有大括号下标的形式引用单元矩阵元素 例如b 3 3 单元矩阵的元素可以是结构或单元数据 可以使用celldisp函数来显示整个单元矩阵 如celldisp b cellplot函数还可以画出单元矩阵中的每个元素的结构图 2 关于单元矩阵的更多内容参见helpcell 2 3数据统计处理2 3 1最大值和最小值MATLAB提供的求数据序列的最大值和最小值的函数分别为max和min 两个函数的调用格式和操作过程类似 1 求向量的最大值和最小值求一个向量X的最大值的函数有两种调用格式 分别是 1 y max X 返
4、回向量X的最大值存入y 如果X中包含复数元素 则按模取最大值 2 y I max X 返回向量X的最大值存入y 最大值的序号存入I 如果X中包含复数元素 则按模取最大值 求向量X的最小值的函数是min X 用法和max X 完全相同 例求向量x的最大值 命令如下 x 43 72 9 16 23 47 y max x 求向量x中的最大值 y l max x 求向量x中的最大值及其该元素的位置 2 求矩阵的最大值和最小值求矩阵A的最大值的函数有3种调用格式 分别是 1 max A 返回一个行向量 向量的第i个元素是矩阵A的第i列上的最大值 2 Y U max A 返回行向量Y和U Y向量记录A的每
5、列的最大值 U向量记录每列最大值的行号 3 max A dim dim取1或2 dim取1时 该函数和max A 完全相同 dim取2时 该函数返回一个列向量 其第i个元素是A矩阵的第i行上的最大值 求最小值的函数是min 其用法和max完全相同 例分别求3 4矩阵x中各列和各行元素中的最大值 并求整个矩阵的最大值和最小值 3 两个向量或矩阵对应元素的比较函数max和min还能对两个同型的向量或矩阵进行比较 调用格式为 1 U max A B A B是两个同型的向量或矩阵 结果U是与A B同型的向量或矩阵 U的每个元素等于A B对应元素的较大者 2 U max A n n是一个标量 结果U是与
6、A同型的向量或矩阵 U的每个元素等于A对应元素和n中的较大者 min函数的用法和max完全相同 例求两个2 3矩阵x y所有同一位置上的较大元素构成的新矩阵p 2 3 2求和与求积数据序列求和与求积的函数是sum和prod 其使用方法类似 设X是一个向量 A是一个矩阵 函数的调用格式为 sum X 返回向量X各元素的和 prod X 返回向量X各元素的乘积 sum A 返回一个行向量 其第i个元素是A的第i列的元素和 prod A 返回一个行向量 其第i个元素是A的第i列的元素乘积 sum A dim 当dim为1时 该函数等同于sum A 当dim为2时 返回一个列向量 其第i个元素是A的第
7、i行的各元素之和 prod A dim 当dim为1时 该函数等同于prod A 当dim为2时 返回一个列向量 其第i个元素是A的第i行的各元素乘积 例求矩阵A的每行元素的乘积和全部元素的乘积 2 3 3平均值和中值求数据序列平均值的函数是mean 求数据序列中值的函数是median 两个函数的调用格式为 mean X 返回向量X的算术平均值 median X 返回向量X的中值 mean A 返回一个行向量 其第i个元素是A的第i列的算术平均值 median A 返回一个行向量 其第i个元素是A的第i列的中值 mean A dim 当dim为1时 该函数等同于mean A 当dim为2时 返
8、回一个列向量 其第i个元素是A的第i行的算术平均值 median A dim 当dim为1时 该函数等同于median A 当dim为2时 返回一个列向量 其第i个元素是A的第i行的中值 2 3 4标准方差与相关系数1 求标准方差在MATLAB中 提供了计算数据序列的标准方差的函数std 对于向量X std X 返回一个标准方差 对于矩阵A std A 返回一个行向量 它的各个元素便是矩阵A各列或各行的标准方差 std函数的一般调用格式为 Y std A flag dim 其中dim取1或2 当dim 1时 求各列元素的标准方差 当dim 2时 则求各行元素的标准方差 flag取0或1 当fl
9、ag 0时 按 1所列公式计算标准方差 当flag 1时 按 2所列公式计算标准方差 缺省flag 0 dim 1 2 相关系数MATLAB提供了corrcoef函数 可以求出数据的相关系数矩阵 corrcoef函数的调用格式为 corrcoef X 返回从矩阵X形成的一个相关系数矩阵 它把矩阵X的每列作为一个变量 然后求它们的相关系数 corrcoef X Y 在这里 X Y是等长向量 它们与corrcoef X Y 的作用一样 2 3 5排序MATLAB中对向量X是排序函数是sort X 函数返回一个对X中的元素按升序排列的新向量 sort函数也可以对矩阵A的各列或各行重新排序 其调用格式
10、为 Y I sort A dim 其中dim指明对A的列还是行进行排序 若dim 1 则按列排 若dim 2 则按行排 Y是排序后的矩阵 而I记录Y中的元素在A中位置 2 4线性方程组求解 对于线性方程组Ax b 常见的解法有1 利用Cramer法则求解 2 利用逆矩阵求解 即x A 1b 3 利用Gauss消元法求解 4 利用LU分解矩阵法求解 2 4 1矩阵的LU分解 矩阵的LU分解就是将一个矩阵表示为一个交换下三角矩阵和一个上三角矩阵的乘积形式 线性代数中已经证明 只要方阵A是非奇异的 LU分解总是可以进行的 MATLAB提供的lu函数用于对矩阵进行LU分解 其调用格式为 L U P lu A 产生一个上三角阵U和一个下三角阵L以及一个置换矩阵P 使之满足PA LU 当然矩阵A必须是方阵 实现LU分解后 线性方程组Ax b的解x U L b 或x U L Pb 这样可以大大提高运算速度