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

博文

Matlab:如何将一维数列快速分成任意矩阵

已有 25904 次阅读 2009-8-1 10:54 |个人分类:技术备忘录|系统分类:科研笔记| MATLAB, reshape

问题: 如果有一个长度为L的数列,如何将其快速地分为M*N的矩阵(显然L=M*N)?

可以用reshape命令,比如将一行数列a=[1 2 3 4],分成2*2的矩阵,操作如下:
b=reshape(a,2,2)
结果显示为:
b=
    1    3
    2    4
reshape命令是将1到M个数据转置后作为第1列,将M+1到2M个数据转置后作为第2列,余者类推。当处理L非常之大的数列时,reshape比用循环解决此类问题,在速度方面具有明显优势。

当然,上面的例子中,若想得到矩阵:
c=
    1    2
    3    4
得靠循环,语句如下:
clear;clc;
for i=1:M
c(i,:)=a(1+(i-1)*N:N+(i-1)*N);
end
或者将reshape与转置配合起来用,如
clear;clc;
c=reshape(a,2,2)';
c=c';
(感谢网友wangruoqian的提醒!与转置的配合明显要比循环简单的多)




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

上一篇:Latex:如何将一列公式的编号显示在中间
下一篇:多精度通量分解(Multiresolution Flux Decomposition)
收藏 IP: .*| 热度|

0

发表评论 评论 (1 个评论)

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

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

GMT+8, 2024-7-28 19:16

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部