Matlab 矩阵操作函数- reshape repmat permute squeeze flip
来源:互联网 发布:张北数据港招聘信息 编辑:程序博客网 时间:2024/06/07 04:26
Matlab 中经常需要对矩阵进行维度上的操作,下面做一个简单的总结:
在Matlab中,不管矩阵的维度是多少,数据在内存中的存储都是按照 “行-列-页” 的顺序进行存储的。比如:
>> a = [11,12,13; 21,22,23]a = 11 12 13 21 22 23>> a(:)ans = 11 21 12 22 13 23>>有了这个概念之后,理解下面的函数就会很简单。
reshape -- 对矩阵中所有的元素做维度上的重新分配,分配的原则是把内存中的数据按照 “行-列-页” 的顺序填满目的矩阵。(必须保证重新分配后的矩阵与原矩阵元素数量一致):
>> a = [11,12,13; 21,22,23]a = 11 12 13 21 22 23>> reshape(a,[3,2])ans = 11 22 21 13 12 23>>repmat -- 把当前矩阵当做单一元素来组合成目标矩阵:
>> a = [11,12,13; 21,22,23]a = 11 12 13 21 22 23>> repmat(a,[2,1,2])ans(:,:,1) = 11 12 13 21 22 23 11 12 13 21 22 23ans(:,:,2) = 11 12 13 21 22 23 11 12 13 21 22 23>>permute -- 改变现有矩阵维度的顺序,函数参数中有一个向量[2, 3, 1]表示第二个维度更改为第一个维度,第三个维度更改为第二个维度,第一个维度变为第三个维度(数字表示原维度编号,数字的位置表示现在维度的编号):
>> a(:,:,1) = [111,121,131; 211,221,231];>> a(:,:,2) = [112,122,132; 212,222,232]a(:,:,1) = 111 121 131 211 221 231a(:,:,2) = 112 122 132 212 222 232>> permute(a,[2,3,1])ans(:,:,1) = 111 112 121 122 131 132ans(:,:,2) = 211 212 221 222 231 232>>squeeze -- 去掉矩阵中维度大小为1的维:
>> aa(:,:,1) = 111 211a(:,:,2) = 112 212>> size(a)ans = 2 1 2>> b = squeeze(a)b = 111 112 211 212>> size(b)ans = 2 2>>flip -- 按照指定的维度号进行矩阵的翻转:
>> a(:,:,1) = [111,121,131; 211,221,231];>> a(:,:,2) = [112,122,132; 212,222,232]a(:,:,1) = 111 121 131 211 221 231a(:,:,2) = 112 122 132 212 222 232>> fliplr(a)ans(:,:,1) = 131 121 111 231 221 211ans(:,:,2) = 132 122 112 232 222 212>> flip(a,2)ans(:,:,1) = 131 121 111 231 221 211ans(:,:,2) = 132 122 112 232 222 212>> flip(a,1)ans(:,:,1) = 211 221 231 111 121 131ans(:,:,2) = 212 222 232 112 122 132>> flip(a,3)ans(:,:,1) = 112 122 132 212 222 232ans(:,:,2) = 111 121 131 211 221 231>>其中flip有两个引申出来的函数fliplr、flipud来具体实现矩阵的左右和上下翻转。
0 0
- Matlab 矩阵操作函数- reshape repmat permute squeeze flip
- matlab中repmat函数, ndims 函数 与 expand 函数 reshape函数,shiftdim函数和permute函数的用法
- Matlab之repmat和reshape函数
- matlab矩阵复制函数:repmat
- matlab矩阵复制函数:【repmat】
- MATLAB矩阵压缩函数squeeze
- matlab中reshape和repmat函数的用法
- MATLAB reshape,repmat简单示例
- matlab reshape函数三维矩阵
- matlab permute函数
- MATLAB中squeeze函数的作用-三维矩阵(阵列)操作
- matlab中的repmat函数
- Matlab 函数: repmat
- matlab中的repmat函数
- MATLAB中的repmat函数
- matlab repmat函数
- Matlab 使用squeeze函数提取多维矩阵的某一维
- Matlab permute( )函数 & 矩阵A 和矩阵A' 的差别 & imresize( )函数
- 第2周项目3—小试循环(2)
- Asp.Net异步编程
- solaris10上tomcat无法使用64位JVM
- Android触控基础:MotionEvent
- 【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在(java版)
- Matlab 矩阵操作函数- reshape repmat permute squeeze flip
- 关于python subprocess的popen
- .Net网站架构设计(五) 消息中间件
- Sublime Text 3 设置移动光标快捷键
- 操作系统三个简单的部分(Operating Systems in Three Easy Pieces闲来无聊,翻译的)虚拟化部分-原文编号3对话
- 第二周项目三————小试循环
- javascripe的原理1
- BlueMix - IBM 的最新的云产品
- QQ浏览器耍流氓是不是