MATLAB学习笔记4

Matlab学习笔记 Day4

注:仅供学习使用,部分内容来自学校课程课件或网络,理性探讨。

1.矩阵的拼接
(1)将几个矩阵放在[ ]内,水平连接用空格或逗号隔开,[A B]或[A,B]也可以写成horzcat(A,B);垂直连接用分号或回车键隔开,也可以写成vertcat(A,B)
代码例子:

>> A=[];
>> A=[A;ones(1,3)]

A =

     1     1     1

>> A=[A;2*ones(1,3)]

A =

     1     1     1
     2     2     2

>>  A=[A;3*ones(1,3)]

A =

     1     1     1
     2     2     2
     3     3     3

>> A=[A eye(3)]

A =

     1     1     1     1     0     0
     2     2     2     0     1     0
     3     3     3     0     0     1

>> A=[A zeros(3)]

A =

     1     1     1     1     0     0     0     0     0
     2     2     2     0     1     0     0     0     0
     3     3     3     0     0     1     0     0     0

>> B=1:9;A(4,:)=B

A =

     1     1     1     1     0     0     0     0     0
     2     2     2     0     1     0     0     0     0
     3     3     3     0     0     1     0     0     0
     1     2     3     4     5     6     7     8     9

>> C=ones(4,2)

C =

     1     1
     1     1
     1     1
     1     1

>> A(:,10:11)=C

A =

     1     1     1     1     0     0     0     0     0     1     1
     2     2     2     0     1     0     0     0     0     1     1
     3     3     3     0     0     1     0     0     0     1     1
     1     2     3     4     5     6     7     8     9     1     1

(2)通过矩阵重复平铺产生大矩阵
函数:repmat(A,row,col)或repmat(A,[row,col])
功能:将矩阵A沿行和列的方向分别重复row和col次
说明:repmat(A,2,3)和[ A A A ; A A A ]相同

2.矩阵元素重组
函数:B = reshape(A,m,n) 或 reshape(A,[m,n])
功能:返回由矩阵A元素组成的 m x n 的矩阵B,但矩阵A不发生变化

3.矩阵元素的删除
通过赋值为空( [ ] ),可以实现删除若干行元素、若干列元素和整个数组。
注意区分空矩阵和零矩阵!!空矩阵是0x0的数组,而零矩阵是mxn的数组。

4.三维数组
(1)三维数组全下标赋值:

>> A(2,2,2)=1

A(:,:,1) =

     0     0
     0     0


A(:,:,2) =

     0     0
     0     1

(2)对二维矩阵扩充得到三维矩阵

>> b=[1 1; 1 1 ];b(:,:,2)=[2 2 ;2 2]

b(:,:,1) =

     1     1
     1     1


b(:,:,2) =

     2     2
     2     2

(3)将若干个同样大小的二维矩阵进行组合得到三维矩阵
elmat函数库专门提供了函数cat
函数:cat(d,A1,A2,…An)
功能:将一系列数组沿第d维连接成一个数组

>> B1=ones(2,3);B2=repmat(2,2,3);B3=repmat(3,2,3);
>> A1=cat(1,B1,B2,B3)

A1 =

     1     1     1
     1     1     1
     2     2     2
     2     2     2
     3     3     3
     3     3     3

注意:以下式子是等价的
cat(1,B1,B2,B3)↔[B1;B2;B3]↔vertcat(B1,B2,B3)
cat(2,B1,B2,B3)↔[B1,B2,B3]↔horzcat(B1,B2,B3)

(4)利用函数zeros,ones,rand,randn等生成函数直接创建
(5)通常,先用zeros定维、初始化,然后再对其元素进行赋值【推荐使用】

5.多维数组信息
rdims(A) 返回矩阵A的维数
size(A) 返回矩阵A各维的大小,其中nk或ns(k)是第k维的大小
nk=size(A,K) 返回矩阵A第k维的大小
numel(A) 返回矩阵A中元素个数
length(V) 主要用于给出向量V的长度,若用于矩阵则length(A)给出行数和列数中的较大者,即max(size(A))
例子:注意,这里面看数组为1行10列的矩阵,矩阵是二维的,且列维数最大值是1,行维数最大值是10

>> x=1:10;ndims(x),size(x),length(x)

ans =

     2


ans =

     1    10


ans =

    10

6.稀疏数组(以稀疏方式存储的数组,零元素较多)
函数库sparfun中提供了一系列以不同方式建立稀疏矩阵的函数。稀疏矩阵建立后与普通的数组使用方法类似。

(1)将完全存储转化为稀疏存储的转换函数:
A=sparse(S),将矩阵S转化为稀疏存储方式,当矩阵S是稀疏存储方式时,则A=S
A=sparse(m,n):生成一个mxn的所有元素均为0的稀疏矩阵
A=sparse(u,v,S):建立一个max(u)行、max(v)列并以S为稀疏元素的系数矩阵,u(i),v(i)分别为S(i)的行和列下标

(2)将稀疏存储转化为完全存储的转换函数:
B=full(A):返回完全存储矩阵

例子(演示sparse和full)

u=1:4,v=3:6,S=0.1:0.1:0.4,spa=sparse(u,v,S),A=full(spa)

u =

     1     2     3     4


v =

     3     4     5     6


S =

    0.1000    0.2000    0.3000    0.4000


spa =

   (1,3)       0.1000
   (2,4)       0.2000
   (3,5)       0.3000
   (4,6)       0.4000


A =

         0         0    0.1000         0         0         0
         0         0         0    0.2000         0         0
         0         0         0         0    0.3000         0
         0         0         0         0         0    0.4000

(3)生成函数
B=spconvert(A):创建由矩阵A所描述的一个稀疏存储矩阵。
A(i,1):第i个非零元素行下标
A(i,2):第i个非零元素列下标
A(i,3):第i个非零元素实部
A(i,4):第i个非零元素虚部,若矩阵的全部元素都是实数,则无此列

例子:

>> A=[1 2 3;3 4 5;6 7 8]
B=spconvert(A)

A =

     1     2     3
     3     4     5
     6     7     8


B =

   (1,2)        3
   (3,4)        5
   (6,7)        8

>> clear
>> A=[1 2 3  4;3 4 5 6;6 7 8 9]
B=spconvert(A)

A =

     1     2     3     4
     3     4     5     6
     6     7     8     9


B =

   (1,2)      3.0000 + 4.0000i
   (3,4)      5.0000 + 6.0000i
   (6,7)      8.0000 + 9.0000i

(4)A=spdiags(B,d,m,n):产生带状稀疏矩阵
(5)speye(m,n):返回一个mxn的稀疏存储方式单位矩阵

DAY4体会:随着学习时间加长,学习进度明显提高了,MATLAB的学习与函数的学习密不可分,要理解具体函数对应的意思,实在不记得也可以通过help查找函数的用法和具体内容

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值