磁带上的矩阵转置

Posted

技术标签:

【中文标题】磁带上的矩阵转置【英文标题】:Matrix transposition on a magnetic tape 【发布时间】:2012-01-29 09:34:59 【问题描述】:

编程知识问题 7 是关于转置存储在 磁带 上的 4000 x 4000 矩阵。 我的解决方案是简单地使用临时变量并交换 a[i][j] 和 @ 的内容987654323@。 作者给出的解决方案让我有点困惑。他说我们应该:

    将行索引和列索引添加到每个索引 按行对矩阵中的记录进行排序 删除附加的索引。

为什么要经历这么多麻烦才能完成这项工作?跟磁带有关系吗?

【问题讨论】:

在编写 Progrmming Pearls 时,一台具有 32K 可用内存的计算机将是一台相当“大机器”。 2 字节整数的 4000 X 4000 矩阵需要 32Mb 的量级来存储,因此不可能将其读入内存。尝试编写一个程序,在内存中转置一个非方阵 - 这个练习比你想象的更有趣(方阵很容易,非方阵,没那么多)。 【参考方案1】:

我认为这个练习的意义如下。

    对于那个年代的计算机,没有足够的 RAM 来容纳具有这种大小的矩阵。所以你提出的交换方法是不可行的。为了转置如此大的矩阵,应该利用外部存储器,即磁带。

    但是,来回读写磁带相当慢。但是磁带是串行存储设备。所以串行读写可以节省很多时间。

    归并排序非常适合这种序列化存储,因为它访问元素的方式,正如wikipedia page 所说的那样。所以我相信“系统磁带排序”是指磁带上的合并排序。

记住以上三点后,我想你可以理解这个练习了。

【讨论】:

【参考方案2】:

我认为磁带的意思是:要找到某个特定元素,你必须从一开始到那个元素。

但我很难理解“什么是系统磁带排序”和“它为什么起作用”。

【讨论】:

以上是关于磁带上的矩阵转置的主要内容,如果未能解决你的问题,请参考以下文章

矩阵与转置

matlab转置矩阵?

matlab中怎么求矩阵的转置

matlab中怎么求矩阵的转置

数组的shape属性与矩阵转置的区别在哪里?

matlab中转置与共轭转置的问题