当前位置:文档之家› 实验3MATLAB矩阵分析与处理和字符串操作实...

实验3MATLAB矩阵分析与处理和字符串操作实...

实验三 MATLAB 矩阵分析与处理、字符串操作
一、实验目的
1.掌握生成特殊矩阵的方法
2.熟练掌握矩阵的特殊操作及一些特殊函数
3.熟练掌握MATLAB 的字符串操作
4.掌握MATLAB 矩阵的关系运算及逻辑运算法则
二、实验内容
1.特殊矩阵分析与处理操作
常用的产生通用特殊矩阵的函数有:zeros( );ones( );eye( );rand( );randn( ). 下面建立随机矩阵。

(1) 在区间[20,50]内均匀分布的5阶随机矩阵。

(2) 均值为0.6、方差为0.1的5阶随机矩阵。

说明:产生(0 ,1)区间均匀分布随机矩阵使用rand 函数,假设得到了一组满
足(0,1)区间均匀分布的随机数x i ,则若想得到任意[a,b]区间上均匀分布的随机数,只需要用i i x a b a y )(-+=计算即可。

产生均值为0、方差为1的标准正态分布随机矩阵使用randn 函数,假设已经得到了一组标准正态分布随机数x i ,如果想要更一般地得到均值为i i x y ,、σμσμ+=可用的随机数方差为2计算出来。

针对本例,命令如下:
x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
建立对角阵。

diag( )函数除了可以提取矩阵的对角线元素以外,还可以用来建立对角矩阵。

设V 为具有m 个元素的向量,diag(V)将产生一个m*m 对角矩阵,其主对角线元素即为向量V 的元素。

例如:
diag([1,2,-1,4])
ans= 40000
10000
20000
1 diag(V)函数也有另一种形式diag(V ,k),其功能是产生一个n*n(n=m+|k|)的对角矩阵,其第k 条对角线的元素即为向量V 的元素。

例如:
diag(1:3,-1)
ans=03000
0200
0010
000
矩阵的旋转
函数rot90(A,k)表示将矩阵A 以90度为单位对矩阵按逆时针方向进行k 倍的旋转。

rem 与mod 函数的区别
练习:
1> 写出完成下列操作的命令。

(1)建立3阶单位矩阵A 。

eye(3)
(2)建立5*6随机矩阵A ,其元素为[100,200]范围内的随机整数。

A=100+(200-100)*rand(5,6)
(3)产生均值为1,方差为0.2的500个正态分布的随机数。

B=1+sqrt(0.2)*randn(50,10)
(4)产生和A 同样大小的零矩阵。

zeros(size(A))
(5)将矩阵A 主对角线的元素加30。

B=eye(5,6)*30
A+B
(6)从矩阵A 提取主对角线元素,并以这些元素构成对角阵。

B=diag(diag(A)’) 注:转置是把列向量转变成行向量。

2> 先建立5*5的矩阵A ,然后将A 的第一行元素乘以1,第二行元素乘以2,…,第五行乘以5。

(提示:用一个对角矩阵左乘一个矩阵时,相当于用对角阵的
第一行元素乘以该矩阵的第一行,用对角阵的第二行乘以该矩阵的第二行,…,依次类推。

因此,只需按要求构造一个对角矩阵D ,并用D 左乘A 即可。

如果要对A 的每列元素乘以同一个数,可以用一个对角阵右乘矩阵A 。

)矩阵A 中的元素自已随便建立。

A=rand(5)
D=diag(1:5)
D*A
3> 使用函数,实现方阵左旋90度或右旋90度的功能。

原矩阵为A ,A 左旋后得到B ,右旋后得到C 。

⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=129631185210741A ,⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1011
12789456123321654987121110,C B B=rot90(A)
C=rot90(A,3) 4> 将矩阵⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡--=90
1511250324153211A 用flipud 、fliplr 、rot90、diag 、triu 和tril 函数进行操作。

5> 将矩阵⎥⎦
⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=03410,61195,71521c b a 组合成两个新矩阵。

(1) 组合成一个3*4的矩阵,第一行为按列顺序排列的a 矩阵元素,第二
行为按列顺序排列的b 矩阵元素,第三行为按列顺序排列的c 矩阵元
素,即⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡043106911572151 a1=reshape(a,1,4)
b1=reshape(b,1,4)
c1=reshape(c,1,4)
d=[a1;b1;c1]
(2)按照a,b,c的列顺序组合成一个行矢量,即[1 15 2 7 5 11 9 6 10 3 4 0] d=[a1 b1 c1]
6>输入a=[2.59 –1.49 3.1 -0.2],分别使用数学函数ceil、fix、floor、round
查看各种取整的运算结果。

7> 在[0,3π]区间,求y=sin(x)的值。

(从函数值着手进行处理)要求:
(1)消去负半波,即(π,2π)区间内的函数值置0。

(2)(π/3, 2π/3 )和( 7π/3, 8π/3 )区间内取值均为sin π/3 。

2、字符串操作
建立一个字符串向量,然后对该向量做如下处理:
(1)取第1~5个字符组成的子字符串。

(2)将字符串倒过来重新排列。

(3)将字符串中的小写字母变成相应的大写字母,其余字符不变。

(4)统计字符串中小写字母的个数。

命令如下:
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) %统计小写字母的个数
练习:
1.输入字符串变量a为“hello”,将a的每个字符向后移4个,例如“h”变为
“l”,然后再逆序排放赋给变量b。

a=’hello’
a=abs(a)+4或者a(1:5)=a(1:5)+4则直接省略char(a)的过程。

或者a=a(1:5)+4不能省略下一个语句
a=char(a)
b=a(end:-1:1)。

相关主题