24小时热门版块排行榜    

CyRhmU.jpeg
查看: 348  |  回复: 3
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

Glass_fish

金虫 (正式写手)

[交流] 【原创】关于Matlab 中Reshape()的执行过程的探讨

由于本人工作需要,现对Matlab进行学习,以后会小木虫发表自己的学习感想,这是我在这个板块发表的第一篇学习日志,请各位重又支持!
Matlab中的reshape()函数的工作过程我想用几个事例来分析:
A=[
1 2 3 4
5 6 7 8
];
>> B=reshape(A,4,2)

B =

     1     3
     5     7
     2     4
     6     8

>> C=reshape(A,1,8)

C =

     1     5     2     6     3     7     4     8
D=reshape(A',1,8)

D =

     1     2     3     4     5     6     7     8
上面 是我在Matlab上输入的几个例子B数列是将A重塑为4行2列输出,输出的结果是将第2列和第4列的数据分别移至第一列和第三列的末端,C是将A数列转换成一个1*8的矩阵,其结果是将第各列数据先展开成行,然后再按列标按顺序组合,若想得到【1 2 3 4 5 6 7 8】则需对A‘应用reshape命令。因此可以推断,reshape命令在执行时现对矩阵中的列进行操作,然后再按列标进行组合。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Glass_fish

金虫 (正式写手)

引用回帖:
Originally posted by change0618 at 2010-02-09 11:50:01:

对于矩阵都是这样的,第一维称为行,第二维称为列,
因此矩阵的顺序索引号是先从第一列开始,然后顺序至第二列。。。。
对于你的这个矩阵A
A(2)=5而不是2
A(3)=2而不是3
而对于A、B、C来讲
A(2)=B(2)=C ...

谢谢,提醒!~呵呵,以后还请多多指教!
3楼2010-02-09 13:31:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+1):鼓励交流。 2010-02-09 12:14

对于矩阵都是这样的,第一维称为行,第二维称为列,
因此矩阵的顺序索引号是先从第一列开始,然后顺序至第二列。。。。
对于你的这个矩阵A
A(2)=5而不是2
A(3)=2而不是3
而对于A、B、C来讲
A(2)=B(2)=C(2)=5
依次类推。。。
2楼2010-02-09 11:50:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Glass_fish

金虫 (正式写手)

引用回帖:
Originally posted by change0618 at 2010-02-09 11:50:01:

对于矩阵都是这样的,第一维称为行,第二维称为列,
因此矩阵的顺序索引号是先从第一列开始,然后顺序至第二列。。。。
对于你的这个矩阵A
A(2)=5而不是2
A(3)=2而不是3
而对于A、B、C来讲
A(2)=B(2)=C ...

其实,Matlab中的矩阵也可以当做C中的数组来用,如例子中A(2,3)=7,与C中数组的区别是,C中的数组开始第一个是A[0][0]而不是A[1][1],例如我用int A[n][m];命令定义了一个n*m的数组,现在我想取出其中的第k行第h列的内容实际上我所输入的表达式是:A[k-1][h-1]一次规律地n行m列应该是A[n-1][m-1],从这点看我原先在C中所学到的数据结构和Matlab中还是有很大差距的。以后多多交流哦
4楼2010-02-09 13:45:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见