您的位置:首页 > 编程语言 > MATLAB

MATLAB 小知识 第二篇 矩阵运算1

2014-07-25 21:30 253 查看
1. 矩阵的创建

使用逗号 “,”或者空格 “ ” 分隔矩阵的列; 使用分号 “;”或者 回车键来分隔矩阵的行!

如 A = [1,1,1; 2 2 2

3 3 3;4 4,4];注意一行中可以出现空格与逗号的联合使用。还有如果在命令行中输入该命令时,在换行的时候不能直接按 Enter键,在matlab中Enter是执行键,我们需要按 Shift+Enter就可以实现换行了!

2.矩阵中的元素必须是数字或者值已经确定的变量和表达式。(没试过变大事或者已赋值变量的可试试)

3。矩阵构造符[]只能用来生成二维矩阵,不能创建高维数组。

4.几种不常用的矩阵构造函数

rand 均匀分布随机矩阵

randn 正态分布随机矩阵

diag 对角矩阵 (还可以计算一个矩阵的迹)

compan 伴随矩阵

gallery 测试矩阵

hadamard Hadamard矩阵

hilb Hilbert矩阵

invhilb Hilbert转置矩阵

rosser 经典对阵特征值测试矩阵

toeplitz Toeplitz矩阵

pascal Pascal 矩阵

vander Vandernonde矩阵

wilkinson Wilkinson 特征值测试矩阵

>> diag(eye(4))

ans =

1

1

1

1

>> diag(ans)

ans =

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

>> a = [ 1 2 3];

>> diag(a,-1) %对角线元素的偏移

ans =

0 0 0 0

1 0 0 0

0 2 0 0

0 0 3 0

5.矩阵的拼接

水平拼接:C = [A B] or C = [A,B] or horzcat函数 or cat(2,A,B)

垂直拼接:C = [A;B] or vertcat函数 or cat(1,A,B)

repmat函数

W = eye(2)

W =

1 0

0 1

>> Y = repmat(W,2,3)

Y =

1 0 1 0 1 0

0 1 0 1 0 1

1 0 1 0 1 0

0 1 0 1 0 1

新矩阵Y可以看成2*3的矩阵,每一个“元素”都是矩阵W。

blkdiag函数:用现有矩阵构造对角阵

a = [1,2,3; 2 3 4];

>> b = [1 2;3,4;5 6];

>> blkdiag(a,b)

ans =

1 2 3 0 0

2 3 4 0 0

0 0 0 1 2

0 0 0 3 4

0 0 0 5 6

矩阵a,b不用是方阵,也不需要尺寸对应。

6.改变矩阵尺寸

a = magic(3); 缩小 a(:,3) = [] 小了一列; 扩大 a(:,4) = 3;大了一列

注意:a(2,1) = [];是不对的,在线性下标下可以用该方法删除一个或多个元素,得到矩阵的剩余元素排列成为行向量 a(1:3:end) = [] 是可以的。结果

a =

3 4 5 9 7 2

7.改变矩阵形状的函数

reshape 重新排列矩阵

rot90 矩阵逆时针旋转90度

fliplr 垂直方向为轴翻转矩阵

flipud 水平方向为轴翻转矩阵

flipdim 指定方向为轴翻转矩阵

A= magic(3)

A =

8 1 6

3 5 7

4 9 2

>> B = reshape(A,1,9)

B =

8 3 4 1 5 9 6 7 2

在使用reshape函数,由A矩阵线性排列转化为B矩阵,在转化为矩阵B时,按列排列 下面代码验证

C = magic(4)

C =

16 2 3 13

5 11 10 8

9 7 6 12

4 14 15 1

>> D = reshape(C,2,8)

D =

16 9 2 7 3 6 13 12

5 4 11 14 10 15 8 1

fliplr 和 flipud在翻转时以矩阵的中心行列为轴!当行列为奇数时,中心轴不变位置,当行列为偶数时,其实中心轴为是无形的 例:

fliplr(A)

ans =

6 1 8

7 5 3

2 9 4 奇数: 红色的列为中心轴

fliplr(C)

ans =

13 3 | 2 16

8 10 | 11 5

12 6 | 7 9

1 15 | 14 4 偶数:红线为中心轴!

8. 函数linspace and logspace

linspace(a,b) 生成一个首尾分别为a和b的100个数

linspace(a,b,n) 生成一个首尾分别为a和b的n个数

logspace(a,b) 在[10的a次幂,10的b次幂]区间生成50个差值相等的数,并且返回50个数以10为底的幕组成的行向量
logspace(a,b,n)跟上面差别不大,只是该形式生成n个等差的数且返回!

9.空矩阵和 0矩阵不是一个概念!前者是没有元素,后者是元素均为0.
10.两个空矩阵的拼接为空矩阵,一个非空矩阵和一个空矩阵的拼接,结果为非空矩阵本身!

该文主要用于记录本人的学习,如果对您有所帮助,乃是我的荣幸!该文均为本人学习过程中手打,如有错误还请指出,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: