matlab中concur怎么用,Matlab的concur、repmat、kron、reshape函数介绍

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

1、concur

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

Command Window中help信息如下:

1107314e6b6f9d25cb686e896c9a6b20.png

使用举例如下:

68c02ba2e12cca25265f45902ce94e4b.png

2、repmat函数

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

Command Window中help信息如下:

b4e80e55798b9dd342b9af0cdbfd711c.png

使用举例如下:

3b6027824596035e59fcd9c0b7184215.png

更通用的使用例子如下:

3c2a9feb295a4297e5533375e5f8e12b.png

3、kron函数

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

Command Window中help信息如下:

ff156cce78bf777662559f50042ce19a.png

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

470a9bab8403c3486d365ca76f4d5237.png

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

07498c385cc0fbdafb9ab08fe9f95ec8.png

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

bbbb71add54b7a521bf1e5e4de0fed7d.png

4、reshape

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

Command Window中help信息如下:

f831c577b79801f98f0b1dd4775e7669.png

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

67657c2c0a746cd74752835125924b76.png

其中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里能矩阵化实现的尽量矩阵化实现,当矩阵较大时,节省的时间就感觉到了。这里实现如下:

e98362d7a23f24f765080473292a6a7f.png

5、补充:矩阵向量化

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

ca79463b9682cf5fba34db8c59886624.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值