声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1980|回复: 7

[编程技巧] <求助> 三维矩阵的提取问题

[复制链接]
发表于 2011-4-29 15:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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

使用道具 举报

发表于 2011-5-1 11:22 | 显示全部楼层
本帖最后由 meiyongyuandeze 于 2011-5-1 16:48 编辑

  1. clc
  2. clear
  3. New=[];
  4. A=ones(68,65,28);
  5. for i=1:68
  6. for j=1:65
  7. B(:,j)=A(i,j,:);
  8. end
  9. New=[B;New];
  10. end
  11. size(New)

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


点评

赞成: 5.0
赞成: 5
感谢感谢  发表于 2011-5-5 10:36

评分

1

查看全部评分

 楼主| 发表于 2011-5-5 10:32 | 显示全部楼层
回复 2 # meiyongyuandeze 的帖子

非常感谢您的回复!
按照你的方法,问题已经解决了,将New=[B;New]改为New=[New;B],得到了我想要的结果。
非常感谢!
发表于 2011-5-5 10:39 | 显示全部楼层
回复 3 # hmjerry 的帖子

不客气,我也是跟着学习了下!
发表于 2011-5-5 14:18 | 显示全部楼层
  1. A = rand(68,65,28);
  2. B = reshape(permute(A,[3 1 2]),[],size(A,2))
复制代码

评分

1

查看全部评分

 楼主| 发表于 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列。
谢谢了!
发表于 2011-5-19 23:07 | 显示全部楼层
回复 6 # hmjerry 的帖子

不好意思,没怎么看明白B的生成形式!
 楼主| 发表于 2011-5-20 08:56 | 显示全部楼层
回复 7 # meiyongyuandeze 的帖子

已经解决了,还是谢谢你!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-21 04:52 , Processed in 0.146829 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表