对该文发表评论已有6条评论,点击全部查看
我的态度:

    登录 | 注册 需要登陆才可发布评论
最新 最热
2016-12-06 23:09:17 guan123(guan123)
hangmuyang 于 2014-03-07 09:56:57发布
\"为了人们交流的方便,大家习惯上,把前面的维度称为列,后面的维度称为行。\"
这句话是不是有错啊,应该是习惯上前面的维度称为行,后面的维度称之为列。Fortran存储结构中列占优,所以数组存储中先把列号小的按行的编号先存储,进而再改变列的值。
chuxf 于 2014-03-07 19:13:58发布正如我所言,这是习惯上的问题。在我接受的教育里,前面维度为列,因此优先存储。
在一般计算中把哪个维作为列或者行,都没有什么关系,只要统一了就行。但要用到MKL函数库时,比如矩阵的乘积GEMM,就必须把前面的维度当成行,也就是常用的书写习惯,这样才是对的。拿一个2x2的矩阵和2x1的向量相乘,试下就知道了。所以一楼所说的问题还是值得商榷,在计算中还是要注意。
回复 支持1
2015-10-20 15:33:46 atmosphere_sun(atmosphere_sun)
觉得和数组声明时把哪一维当作行,哪一维当作列有很大关系,以前一直把第一维当做行,第二行当作列,拜读本文后觉得,第一维当做列,第二维当做行,会使得存储顺序和文本读取的顺序一致,会方便很多。
回复 支持0
2015-03-20 19:54:03 luosidinger(luosidinger)
看了两遍有点迷糊,把例子程序输进去(创建相应的文本数据)最后观察到输出到显示器上的数据,却如楼主所说,以前从没考虑这么深,以前听老师讲课说数组第一个下标是行第二个才是列,这篇文章彻底解决了我错误的根源,也让我了解了数据在文本文件里的存储(直观让人看见的)和数据在内存中的存储(看不见的)方式的不同,获益良多。谢谢楼主
回复 支持1
2014-04-02 22:28:39 小鱼(岸边的鱼)
拜读了N遍了,还是有些头晕,哎。。。
回复 支持0
2014-03-07 19:13:58 楚香饭(楚香饭)
hangmuyang 于 2014-03-07 09:56:57发布
\"为了人们交流的方便,大家习惯上,把前面的维度称为列,后面的维度称为行。\"
这句话是不是有错啊,应该是习惯上前面的维度称为行,后面的维度称之为列。Fortran存储结构中列占优,所以数组存储中先把列号小的按行的编号先存储,进而再改变列的值。
正如我所言,这是习惯上的问题。在我接受的教育里,前面维度为列,因此优先存储。
回复 支持0
2014-03-07 09:56:57 hangmuyang(hangmuyang)
\"为了人们交流的方便,大家习惯上,把前面的维度称为列,后面的维度称为行。\" 这句话是不是有错啊,应该是习惯上前面的维度称为行,后面的维度称之为列。Fortran存储结构中列占优,所以数组存储中先把列号小的按行的编号先存储,进而再改变列的值。
回复 支持1