Matlab 的reshape函数

看Matlab的help文档讲得不是清楚。

先给上一段代码:

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

>> b=reshape(a,2,6);

这段代码的结果是这样的:

>> a

1     2     3

4     5     6

7     8     9

10    11    12

>> b

1     7     2     8     3     9

4    10     5    11     6    12

对于  b=reshape(a,m,n);

其中的规律是这样的,先把矩阵a按列拆分,然后拼接成一个大小为m*n的向量。然后对这个向量每隔m间隔取一个元素组成一个向量b_i,之后的向量b_i+1也是这样生成,只不过第一个元素往下移一位。这样做完之后得到m个大小为n的行向量,将这些行向量拼接即可得到矩阵b。

 

后记:毕业设计中用到一个向量变换,一开始比较纠结,用循环实现的。迭代1000多次要用到2秒。后来用reshape函数,总共才用了0.03秒,对于我这个深度强迫症患者来说,这两秒时间我还是看得比较宝贵的,哈哈。

以后写matlab要引以为鉴,尽量少用for循环,多用矩阵或者向量的方式来处理。

时间: 2024-10-12 07:54:53

Matlab 的reshape函数的相关文章

Matlab 的reshape函数(转)

看Matlab的help文档讲得不是清楚. 先给上一段代码: >> a=[1 2 3;4 5 6;7 8 9;10 11 12]; >> b=reshape(a,2,6); 这段代码的结果是这样的: >> a 1     2     3 4     5     6 7     8     9 10    11    12 >> b 1     7     2     8     3     9 4    10     5    11     6    12

【转载】matlab的reshape函数的作用

http://blog.csdn.net/zhang11wu4/article/details/7979423 因为我用的MATLAB程序中出现reshape函数,舍友用的程序也出现...所以查询了上面的网页感觉挺不错的 K>> b1 b1(:,:,1) = 1 3 0 0 b1(:,:,2) = 4 3 1 0 以上是b1的组成,是个2X2X2的三维矩阵,相当于把两个2X2的矩阵叠在一起,定义为第一层和第二层. K>> c1=reshape(b1,4,2) c1 = 1 4 0

matlab reshape函数

语法 (1)B = reshape(A,m,n) 用法: B=reshape(A,m,n) 返回m*n矩阵B,它的元素是获得A的行宽度.如果A没有m*n元素,得到一个错误结果. 例子: <span style="font-size:18px;">>> A=rand(1,10)</span> 结果: <span style="font-size:18px;">A = Columns 1 through 8 0.1622

matlab:reshape

转自:http://blog.sina.com.cn/s/blog_9444ed240101dxx3.html 看Matlab的help文档讲得不是清楚. 先给上一段代码: >> a=[1 2 3;4 5 6;7 8 9;10 11 12]; >> b=reshape(a,2,6); 这段代码的结果是这样的: >> a 1     2     3 4     5     6 7     8     9 10    11    12 >> b 1     7

opencv3学习:reshape函数

在opencv中,reshape函数比较有意思,它既可以改变矩阵的通道数,又可以对矩阵元素进行序列化,非常有用的一个函数. 函数原型: C++: Mat Mat::reshape(int cn, int rows=0) const 参数比较少,但设置的时候却要千万小心. cn: 表示通道数(channels), 如果设为0,则表示保持通道数不变,否则则变为设置的通道数. rows: 表示矩阵行数. 如果设为0,则表示保持原有的行数不变,否则则变为设置的行数. 首先设置一个初始矩阵:一个20行30

Matlab自己定义函数

Matlab提供了强大的函数库供用户调用,但也支持用户自定义函数.本文使用了范德堡大学教授Akos Ledeczi授课中的样例来一步步说明怎样在Matlab中自定义函数. 首先,在command window中输入edit命令.開始编辑函数.本函数实现的是随机生成一个3行4列的矩阵.该矩阵的元素取值范围在0-1之间. function myRand a = rand(3,4) end 当中,function和end是keyword,function表示该文件是一个函数,end表示函数体的结束.在

Matlab中plot函数全功能解析

Matlab中plot函数全功能解析 功能 二维曲线绘图 语法 plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName',PropertyValue,...)plot(axes_handle,...)h = plot(...)hlines = plot('v6',...) 描述 plot(Y)如果Y是m×n的数组,以1:m为X横坐标,Y中的每一列元素为Y坐标,绘制n条曲线:如果Y是n×1或者1×n的向量,则以1:n

【转】利用matlab生成随机数函数

原文地址:利用matlab生成随机数函数 rand(n):生成0到1之间的n阶随机数方阵  rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) betarnd:贝塔分布的随机数生成器 binornd:二项分布的随机数生成器 chi2rnd:卡方分布的随机数生成器 exprnd:指数分布的随机数生成器 frnd:f分布的随机数生成器 gamrnd:伽玛分布的随机数生成器 geornd:几何分布的随机数生成器 hygernd:超几何分布的随机数生成器 lognrnd:对数正态分布

Ubuntu 下matlab 查看memory函数

function checkmemory %Copyright (c) 2014,Lv Qi %All rights reserved. % %Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: % % Redistributions of source code