MATLAB学习 之 矩阵(一)

回顾向量(一维)

构造向量的方法
直接法
增量法
linspace/logspace函数法
(详情请查看matlab学习 一 创建向量)

矩阵

构造矩阵的 方法

1 简单的创建方法
用**[ ]**直接创建
行之间用分号隔开,元素之间用空格或者逗号隔开
A=[1 2 3; 4 5 6; 7 8 9]
每行元素相同的矩阵可以这样构造
A=[1 2 3]:
B=[A;A;A]

每列元素相同的话可以这样构造
A=[1,2,3]’;
B=[A,A,A]
2 meshgrid函数
[X,Y] = meshgrid(x,y)(二维)
构造行向量x,有M个元素(增量法)
x=0:2:8
构造列向量y,有N个元素 (logspace函数法)
y=logspace(0,1,8)
再使用meshgrid函数构造一个矩阵

[X,Y]=meshgrid(x,y)

[X,Y]中的X,Y矩阵都是M行N列的矩阵。但是X,Y的构造不同,X矩阵是以行向量x纵向复制N列,Y是以列向量y横向复制M行。

surf(X,Y,Z)画出三维图形曲面

view(2)看一下俯视图,可以看出,x轴坐标均匀排列,y轴坐标成对数排列

[X,Y] = meshgrid(x)
[X,Y,Z] = meshgrid(x,y,z)(三维)
[X,Y,Z] = meshgrid(x,y,z)
3 构造特殊矩阵
ones 创建一个所有元素都为1的矩阵
zeros 创建一个所有元素都为0的矩阵
eye 创建一个对角线为1,其他元素为0的矩阵(单位矩阵)
diag 根据矢量创建对角矩阵(还可以用来获得一个矩阵对角线上的元素,并且可以根据这个获取的元素构造一个对角矩阵)
magic 创建一个方形矩阵,其中行 ,列和对角线上元素的和相等
rand 创建一个矩阵或数组,其中元素为服从均匀分布的随机数
randn 创建一个矩阵或数组,其中元素为服从正态分布的随机数
randpem 创建一个矢量(1 x n的矩阵)

4 聚合矩阵
矩阵聚合是通过连接一个或者多个矩阵来形成新的矩阵。符号[ ]不就是矩阵构造符号,也是聚合运算符。C=[A B]在水平方向上聚合,C=[A;B在垂直方向上聚合。

A=ones(1,4)*5
B=rand(3,4)
C=[A;B]

聚合矩阵的特殊函数
| cat | 沿指定的维聚合矩阵|
|-horzcat-|水平聚合矩阵|
| vertcat | 垂直聚合矩阵 |
| repmat | 通过复制和叠置来创建新数组和新矩阵 |
|-repelem-|通过复制元素来创建新矩阵和数组|
| blkdiag | 用已有矩阵创建块对角矩阵|

cat(2,A,B)按行方向聚合
cat(1,A,B)按列方向聚合

A=[1,2:3,4]
B=repmat(A,2)把A当成一个块,2x2
B=repmat(A,2,3) 2x3

5 组合不同类型的数据、
构造矩阵时,如果矩阵的数据类型不同,则会对这些元素进行类型转换,然后生成的矩阵具有相同的类型。

例如:
用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时,新矩阵是低精度的。

A=[5.4; [ ],7.1]
把空矩阵忽略掉

single 和doubie -------single
double 和 int ------int
char 和 int ------char
double 和 逻辑 型 -----double

可以用class()查看数据类型

以下为部分代码:

ones(4)

ans =

 1     1     1     1
 1     1     1     1
 1     1     1     1
 1     1     1     1

ones(2,3)

ans =

 1     1     1
 1     1     1

zeros(1,2)

ans =

 0     0

eye(3)

ans =

 1     0     0
 0     1     0
 0     0     1

eye(2,3)

ans =

 1     0     0
 0     1     0

x=[0;2;8]

x =

 0
 2
 8

x=[0:2:8]

x =

 0     2     4     6     8

y=logspace(0,1,10)

y =

列 1 至 9

1.0000    1.2915    1.6681    2.1544    2.7826    3.5938    4.6416    5.9948    7.7426

列 10

10.0000

[X,Y]=meshgrid(x,y)

X =

 0     2     4     6     8
 0     2     4     6     8
 0     2     4     6     8
 0     2     4     6     8
 0     2     4     6     8
 0     2     4     6     8
 0     2     4     6     8
 0     2     4     6     8
 0     2     4     6     8
 0     2     4     6     8

Y =

1.0000    1.0000    1.0000    1.0000    1.0000
1.2915    1.2915    1.2915    1.2915    1.2915
1.6681    1.6681    1.6681    1.6681    1.6681
2.1544    2.1544    2.1544    2.1544    2.1544
2.7826    2.7826    2.7826    2.7826    2.7826
3.5938    3.5938    3.5938    3.5938    3.5938
4.6416    4.6416    4.6416    4.6416    4.6416
5.9948    5.9948    5.9948    5.9948    5.9948
7.7426    7.7426    7.7426    7.7426    7.7426

10.0000 10.0000 10.0000 10.0000 10.0000

Z=sin(X).*sin(y)
矩阵维度必须一致。

Z=sin(X).*sin(Y)

Z =

     0    0.7651   -0.6368   -0.2351    0.8325
     0    0.8741   -0.7275   -0.2686    0.9510
     0    0.9050   -0.7532   -0.2781    0.9847
     0    0.7588   -0.6315   -0.2332    0.8256
     0    0.3195   -0.2659   -0.0982    0.3476
     0   -0.3973    0.3307    0.1221   -0.4323
     0   -0.9070    0.7549    0.2787   -0.9869
     0   -0.2586    0.2152    0.0795   -0.2813
     0    0.9037   -0.7521   -0.2777    0.9832
     0   -0.4947    0.4117    0.1520   -0.5382

surf(X,Y,Z)
view(2)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值