hmjerry 发表于 2011-4-29 15:42

<求助> 三维矩阵的提取问题

请问各位:
现在有一个68行*65列*28层的三维矩阵(其实就是有matlb读入的.tif图像),即z=imread('AA.tif')
想找出矩阵中,每一行每一列所对应的所有的层值。存储在一个二维矩阵中。
比如第一行第一列,有28个值,第一行第二列有28个值,直到第68行第65列。
若第一行第一列的层值存储在新矩阵第一列,第1-28行,;第一行第二列的层值存储在新矩阵第二列,第1-28行,一次类推....
最后得到一个28*68行,65列的新矩阵。

描述比较拗口,但意思应该表达清楚了,请各位大侠帮忙!谢谢啦!

meiyongyuandeze 发表于 2011-5-1 11:22

本帖最后由 meiyongyuandeze 于 2011-5-1 16:48 编辑


clc
clear
New=[];
A=ones(68,65,28);
for i=1:68
for j=1:65
B(:,j)=A(i,j,:);
end
New=;
end
size(New)

ans =
      1904          65
楼主没给出实际的矩阵,我随便给了个简单的矩阵,操作应该是一样的,程序中New就是楼主想要的矩阵,验证了下,生成的New矩阵是1904(68*28)行65列。
楼主可以按照自己的问题计算,应该没什么问题!
希望能解决你的问题!


hmjerry 发表于 2011-5-5 10:32

回复 2 # meiyongyuandeze 的帖子

非常感谢您的回复!
按照你的方法,问题已经解决了,将New=改为New=,得到了我想要的结果。
非常感谢!

meiyongyuandeze 发表于 2011-5-5 10:39

回复 3 # hmjerry 的帖子

不客气,我也是跟着学习了下!

qibbxxt 发表于 2011-5-5 14:18

A = rand(68,65,28);
B = reshape(permute(A,),[],size(A,2))

hmjerry 发表于 2011-5-17 15:26

回复 2 # meiyongyuandeze 的帖子

你好想继续请教下    得到1904*65的新矩阵后,想以28行*1列为单位,对矩阵中的元素进行计算,得到新矩阵B,该如何提取?
比如,计算第1到28行第1列的数据,将结果存入新矩阵的第1到28行第1列,然后计算第2列,结果存入新矩阵的第1到28行第2列·····直到第65列,结果存入第1到28行第65列.
然后计算第29到第56行,第一列的数据,·····
直到第1876到1904行,第65 列的数据。
最终得到的新矩阵为1904*65列。
谢谢了!

meiyongyuandeze 发表于 2011-5-19 23:07

回复 6 # hmjerry 的帖子

不好意思,没怎么看明白B的生成形式!

hmjerry 发表于 2011-5-20 08:56

回复 7 # meiyongyuandeze 的帖子

已经解决了,还是谢谢你!
页: [1]
查看完整版本: <求助> 三维矩阵的提取问题