hanihaoma 发表于 2009-3-10 22:19

4列256行矩阵,重组成16列64行,请问如何实现。

我有一个C 矩阵要处理里面的数据,现在是C 是 256行4列(由于保存数据时,每4个数加了换行)为了便于数据分析,现在需要把它变成
16列64行 的 A矩阵,用C矩阵每4行变成A 矩阵的一行(例如C 的前 4行变成 A的第一行,C的5-8行变成 A的第2行,以此类推)。
我自己做的循环总是差行,要不就是多行,还请高手帮忙。
应该是比较简单的问题。郁闷中~~ 在线等。。

[ 本帖最后由 ChaChing 于 2009-3-11 21:01 编辑 ]

ChaChing 发表于 2009-3-10 22:31

help reshape

hanihaoma 发表于 2009-3-10 22:43

刚看了下,但是,我要的新矩阵是,C 的每4行变成A 的一列, 用 reshape(C,64,16)是按列取值排成新矩阵的
所以还是解决不了。

[ 本帖最后由 ChaChing 于 2009-3-11 20:42 编辑 ]

hanihaoma 发表于 2009-3-10 23:40

解答先 将c矩阵 求 c' 后 reshape。 笨啊 :lol

zhaiprc 发表于 2009-3-11 12:50

直接reshape 就ok

hanihaoma 发表于 2009-3-11 16:39

直接reshape 不行啊 ,我试了,不符合我的要求。 真可以的话,请给出简单程序谢谢。

max1859 发表于 2009-3-11 19:59

呵呵,进来学习了,应该是求转置后再reshape吧...

ChaChing 发表于 2009-3-11 20:36

抱歉早上没细看, 不知是否误解楼主意思了!
"由于保存数据时,每4个数加了换行", 什麽意思?
1F-每4行c变成一行a, 3F-每4行c变成一列a, 楼主到底要那个?
针对1F, c为4*256, a为16*64, 直接 a=reshape(c,16,64)就好!
针对3F, c为4*256, a为64*16, 就是 a=reshape(c,16,64); a=a';就好!

[ 本帖最后由 ChaChing 于 2009-3-11 20:45 编辑 ]

friendchj 发表于 2009-3-11 20:51

回复 8楼 ChaChing 的帖子

1F的c为256*4,A为64*16,由于matlab按列操作,应该先转置,后变形。ChaChing兄看反了吧。
"由于保存数据时,每4个数加了换行"应该是指c为4列的原因,我是这样理解的,呵呵

hanihaoma 发表于 2009-3-11 20:55

是1F-每4行c变成一行a,在这再次确认一下。
这样主任,针对 1F 的解法, 直接a=reshape(c,16,64) 是不行的, 必须a1=reshape(c‘,16,64)注意这里是c'
然后 再 a=a1' 才能得到我所要的矩阵,因为 直接a=reshape(c,16,64) 这个命令,是按列的顺序来排列矩阵里面的数据,所以直接a=reshape(c,16,64) 得不到我要求的那个矩阵。 主任可以验证一下。

9楼的说的是对的 c 就是 4列的矩阵 (256行) 。所以变幻时需要先转置矩阵。

[ 本帖最后由 ChaChing 于 2009-4-8 08:03 编辑 ]

ChaChing 发表于 2009-3-11 21:05

伤脑筋! 行-column, 列-row, 是否用词相同!

friendchj 发表于 2009-3-11 21:07

回复 12楼 ChaChing 的帖子

行-row, 列-column
呵呵

ChaChing 发表于 2009-3-11 21:22

回复 13楼 friendchj 的帖子

哇! 真的用词不同!
我怕是自己搅错, 特地查过资料了! 真的相反!
日後可要小心了! 谢谢!

hanihaoma 发表于 2009-3-11 21:30

对啊 行-row, 列-column主任 怎么行-column, 列-row
是要注意呵呵. 总之谢啦。喜欢这里。
页: [1]
查看完整版本: 4列256行矩阵,重组成16列64行,请问如何实现。