Matlab的concur、repmat、kron、reshape函数介绍

本文汇总了Matlab中concur、repmat、kron、reshape四个常用函数的基本使用方法。concur和repmat可将列向量变为每列相同的矩阵,repmat还能复制矩阵;kron可计算矩阵克罗内克积,也能实现repmat功能;reshape可改变矩阵维度。此外,还补充了矩阵向量化的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        也算是经常用到Matlab的concur、repmat、kron、reshape这四个函数吧,但总也记不住其具体用法,每次使用前都要琢磨一下,因此决定将其基本使用方法汇总起来记录一下,故有此文。

1、concur

        有时需要将某个列向量变成一个每列均相同的矩阵,这里就可以使用concur。

        Command Window中help信息如下:

使用举例如下:

2、repmat函数

        该函数也可以使用将某个列向量变成一个每列均相同的矩阵,进一步地还可以将矩阵复制。

        Command Window中help信息如下:

使用举例如下:

更通用的使用例子如下:

3、kron函数

        以上介绍的repmat的功能也可以使用kron实现,当然kron还可以实验更多功能。其实,kron函数是用来计算矩阵的克罗内克积(Kronecker product)的函数(有关克罗内克积可参见百度百科)。

        Command Window中help信息如下:

其中repmat中的第1个例子可使用kron实现如下:

第2个例子可使用kron实现如下:

有时还想把矩阵的每一列(或行)分别复制n份,这里仍可以kron实现,如第一种实现bb=kron(aa,ones(1,3))将每一列复制了3份,而第二种实现bb=kron(aa,ones(3,1))将每一行复制了3份:

4、reshape

        该函数可以将包含N个元素的m1*n1矩阵变为m2*n2的矩阵,reshape只改变矩阵的维度,输入参数要保证矩阵元素个数不变,即N=m1*n1 = m2*n2

        Command Window中help信息如下:

注意矩阵变形时按列取值(whose elements are taken columnwise from X),使用例子如下:

其中bb=reshape(aa,3,2)将2*3矩阵变成了3*2矩阵,而bb=reshape(aa,1,6)则变成为1*6的矩阵(行向量),注意在改变维度时是按列取值的。

 

        使用reshape还可以实现更复杂的功能,例如要对一个3*4的矩阵按如下规则如始化:第1列第2个元素为1、第2列第3个元素为1、第3列第3个元素为1、第4列第1个元素为1,当然可以先初始化aa=zeros(2,3);然后再依次初始化各个元素的值,但在matlab里能矩阵化实现的尽量矩阵化实现,当矩阵较大时,节省的时间就感觉到了。这里实现如下:

5、补充:矩阵向量化

        说到reshape,补充一个Matlab常用的功能,就是将矩阵向量化,使用冒号即可,举例如下:

注意,在向量过程中,也是按列取值的,如果按行取值,则可以先将矩阵转置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值