Python与matlab在存储三维数组上的区别

来源:互联网 发布:合肥网络总监招聘 编辑:程序博客网 时间:2024/04/29 12:56

对于一张彩色图像,用matlab读进来后得到的是一个三维数组,如174×223×3,但是Python中保存的顺序有些不同,对于同一张图像,可能会读成174×3×223。其实对于我们人来说很好理解,就是相当于把坐标旋转了一下,但是在真正处理时需要注意这个问题。
另外如果想对三维矩阵进行旋转的话,可以使用permute函数。例如:

>> A = rand(2,3,4)A(:,:,1) =    0.8147    0.1270    0.6324    0.9058    0.9134    0.0975A(:,:,2) =    0.2785    0.9575    0.1576    0.5469    0.9649    0.9706A(:,:,3) =    0.9572    0.8003    0.4218    0.4854    0.1419    0.9157A(:,:,4) =    0.7922    0.6557    0.8491    0.9595    0.0357    0.9340

A是一个大小为2×3×4的三维矩阵,现在如果想交换第二维和第三维的顺序(也就是旋转一下坐标),可以采用如下操作:

>> B = permute(A, [1, 3, 2])A(:,:,4) =    0.7922    0.6557    0.8491    0.9595    0.0357    0.9340>> B=permute(A,[1,3,2])B(:,:,1) =    0.8147    0.2785    0.9572    0.7922    0.9058    0.5469    0.4854    0.9595B(:,:,2) =    0.1270    0.9575    0.8003    0.6557    0.9134    0.9649    0.1419    0.0357B(:,:,3) =    0.6324    0.1576    0.4218    0.8491    0.0975    0.9706    0.9157    0.9340

会发现,B为2×4×3的矩阵。