matlab多维矩阵在内存中存储顺序
来源:互联网 发布:查看远程端口是否打开 编辑:程序博客网 时间:2024/04/29 14:50
Matlab多维矩阵在内存中存储顺序是按照从前到后每列每列顺序存储的,当第一个维度数据存满后,第二个维度数据增加一,依次类推,在涉及到高维(至少三维)矩阵时,了解到数据的存储顺序对于索引数值来说有很大用处。
(1)二维数组
按上述说的,二维数组的存储方式也是先列后行。比如生成5*5的矩阵如下:
for i=1:5
for j=1:5
aa(i,j)=rand();
end
end
得到:
aa =
0.3998 0.2599 0.8001 0.4314 0.9106
0.1818 0.2638 0.1455 0.1361 0.8693
0.5797 0.5499 0.1450 0.8530 0.6221
0.3510 0.5132 0.4018 0.0760 0.2399
0.1233 0.1839 0.2400 0.4173 0.0497
明显总共有25个数据,那么内存中的顺序就为先第一列值,接着第二列值,等等。当索引时,aa(1) = 0.3998,aa(10) = 0.1839(注意不是0.8693,)0.8693应该是aa(22)。
(2)三维数组
二维数组相对简单,当维数高于3以后,就相对复杂了。比如还是生成随机三维矩阵如下:
for i=1:5
for j=1:5
for k=1:5
ss(i,j,k)=rand();
end
end
end
得到:
ss(:,:,1) =
0.9027 0.9001 0.2417 0.9561 0.8212
0.7317 0.7447 0.6256 0.4868 0.5108
0.8116 0.5502 0.4709 0.1707 0.4302
0.1111 0.6028 0.3188 0.8010 0.5785
0.5211 0.3955 0.9133 0.6797 0.4942
ss(:,:,2) =
0.9448 0.3692 0.4039 0.5752 0.0154
0.6477 0.1890 0.7802 0.4359 0.8176
0.5328 0.6225 0.2305 0.2277 0.1848
0.2581 0.7112 0.4242 0.0292 0.2373
0.2316 0.3674 0.7962 0.1366 0.7791
ss(:,:,3) =
0.4909 0.1112 0.0965 0.0598 0.0430
0.4509 0.6868 0.0811 0.4468 0.7948
0.3507 0.5870 0.8443 0.4357 0.9049
0.4087 0.2217 0.5079 0.9289 0.4588
0.4889 0.9880 0.0987 0.7212 0.7150
ss(:,:,4) =
0.4893 0.7803 0.1320 0.2348 0.1690
0.5470 0.1835 0.9294 0.3063 0.6443
0.9390 0.2077 0.1948 0.3111 0.9797
0.5949 0.1174 0.0855 0.7303 0.9631
0.6241 0.0377 0.2619 0.1068 0.9037
ss(:,:,5) =
0.3377 0.3897 0.9421 0.3532 0.6491
0.2963 0.3685 0.7757 0.5085 0.3786
0.8759 0.3012 0.2259 0.9234 0.4389
0.2622 0.2967 0.2625 0.4886 0.5468
0.6791 0.8852 0.3354 0.6538 0.8909
好了,那么存储的顺序是什么样子的呢,还是那样,假设一般维数矩阵为
(i,j,k,m,n...)的时候,都是先前面的排列,排满了接着再往后面排,这样就是先排i=1:5的值,j=k=1,排完j加1,再排i=1:5,等等。这样排列的数据就为:
0.9027
0.7317
0.8116
0.1111
0.5211
0.9001
0.7447
0.5502
0.6028
0.3955
0.2417
0.6256
0.4709
0.3188
0.6797
..........
检验一下,总共数据125个吧,那么试试ss(10) = 0.3955,去对应一下位置看看,ss(100) = 0.9037,再去对应一下位置看看,ok,差不多就是这么排的。
在高维的矩阵一次类推了,先前面的排,排完往后面进位后继续排,了解了排列的顺序,在涉及到高维索引数据时很有用的。
- matlab多维矩阵在内存中存储顺序
- DWORD变量在内存中和纯单引号的串在内存中存储顺序
- float在内存中存储
- 多维对象的元素矩阵在内存中的分布、opencv
- java中数据在内存中的存储
- 细看代码在内存中如何存储
- java中数据在内存中的存储
- 列存储在内存中如何管理
- 将图片存储在内存中
- 整型数据在内存中如何存储?
- 数据在内存中存储方式学习
- 浮点数在内存中存储
- 浮点数在内存中存储
- java数据类型在内存中存储方式
- 数据在内存中存储方式
- -128在内存中如何存储
- 整数、浮点型在内存中存储
- java中数据类型在内存中存储的方式
- Pig年末数据失败之谜
- C环境
- 安全无小事--技术团队防守一二三
- 回文字符串
- 个人简历html模板
- matlab多维矩阵在内存中存储顺序
- [C++]LeetCode: 1 Remove Element
- 制作win7+ubuntu +winPE+CDlinux多系统启动U盘
- 数据源与连接池关系
- pca 到核PCA ---------
- poj解题报告——1002
- 树状数组求逆序数--poj 2299
- pat 1022
- 浅谈malloc和free工作机理