科研菜鸟分享 http://blog.sciencenet.cn/u/sanshiphy 聚沙成塔,集腋成裘 leilphy@gmail.com

博文

Matlab: 如何对矩阵分块并对各块进行运算

已有 59872 次阅读 2014-9-17 21:50 |个人分类:技术备忘录|系统分类:科研笔记| MATLAB, 矩阵分块

矩阵分块用mat2cell命令,其用法如下图所示(取自Matlab Help):




例1:矩阵 A=[1 2 3 4;4 5 6 7;7 8 9 10;10 11 12 13], 将矩阵等分为4个2*2矩阵。


>> A=[1 2 3 4;4 5 6 7;7 8 9 10;10 11 12 13]


A =


    1     2     3     4

    4     5     6     7

    7     8     9    10

   10    11    12    13


>> B=mat2cell(A,[2 2],[2 2])


B =


   [2x2 double]    [2x2 double]

   [2x2 double]    [2x2 double]


对每个分块进行运算,利用cellfun函数。


例2:求上述各个分块的平均值。

>> C=cellfun(@mean,cellfun(@mean,B,'UniformOutput',false))


C =


    3     5

    9    11


注意最里面的mean是求各块列平均,需要再平均一次才得到每一分块的总平均。应为最里面的mean运算后得到的是cell矩阵,所以false掉‘UniformOutput’参数。外面的一个mean运算得到的是数组,就不需要这样做了(默认的是不false)        


例3:求上述各分块的总和。

>> D=cellfun(@sum,cellfun(@sum,B,'UniformOutput',false))


D =


   12    20

   36    44


这个例子展示了cell型矩阵的运算并不需要用新的函数,只是需要将对应的矩阵运算符与cellfun函数结合即可。          


    

 


 



https://blog.sciencenet.cn/blog-200199-828589.html

上一篇:Matlab:M-lint caused your previous MATLAB session。。。
下一篇:多重分形测度
收藏 IP: 140.105.47.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-1 07:20

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部