问题标签 [submatrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2076 浏览

c++ - 在 C++ 中确定给定 NxN 矩阵的所有平方子矩阵

给定一个 NxN 方阵,我想通过删除相等数量的行和列来确定所有可能的方子矩阵。

为了确定所有可能的 2x2 矩阵,我需要循环 4 次。同样,对于 3x3 矩阵,我需要循环 6 次,依此类推。有没有办法在 C++ 中生成代码,以便动态生成循环代码?我已经检查了一些与 C++ 中的代码生成相关的答案,但其中大多数都使用了 python。我对python一无所知。那么,是否可以编写代码以在 C++ 中生成代码?

0 投票
1 回答
1201 浏览

matlab - 在 Matlab 中快速平均 3D 子矩阵

让我的矩阵的大小Asx x sy x sz. 我想得到一个矩阵B(大小与 相同A),其中 B 的元素表示从 相同位置提取(x,y,z)的子矩阵的平均值。n x n x nA

我该怎么做?

我知道我可以使用convn或使用 3 个for循环来做到这一点,但它会很慢。

A当我使用时,尺寸矩阵在我的机器上200 x 200 x 150double精确的,n = 9大约需要 20 到 30 秒。

0 投票
1 回答
1663 浏览

algorithm - 二维矩阵中大小为 HxW 的最大子数组

给定一个正整数的二维数组,找到大小为 HxW 且总和最大的子矩形。矩形的总和是该矩形中所有元素的总和。

输入: 具有正元素的 2D 数组 NxN 子矩形的 HxW 大小

输出: HxW 大小的子矩阵,其元素之和最大。

我已经使用蛮力方法解决了这个问题,但是,我现在正在寻找具有更好复杂性的更好解决方案(我的蛮力方法的复杂度是 O(n 6 ))。

0 投票
4 回答
376 浏览

r - 如何使用 R 从更大的矩阵中提取子矩阵的维度?

我有以下矩阵:

我想知道如何提取元素等于 1 的子矩阵的 7x4 维度。

0 投票
1 回答
474 浏览

r - 如何在R中基于关系选择(邻接)矩阵中的子矩阵

我有一个矩阵,它代表各种工作之间的流动性:

这在社交网络分析中被视为有向加权邻接矩阵。网络的方向是从行到列:因此移动性被定义为从作业行到作业列。对角线是有意义的,因为可以换到另一家公司的同一份工作。

对于我的部分分析,我想选择一个由作业 1、作业 5 和作业 7 组成的子矩阵:

然而,这只给出了这三个工作之间的直接联系。我需要的是这个:

这里还包括工作 2 和 6,因为这两个工作也与工作 1、5 或 7 有直接联系。而工作 3 和 4 被排除在外,因为它们与工作 1、5 或 7 没有任何联系。

我不知道该怎么做。也许我必须将其转换为 igraph 对象才能到达任何地方?

然后也许使用 ego/neighborhood-function,也来自 igraph 包?但是我真的不确定如何。或者,如果这是最好的方法。

感谢您的时间,

埃米尔·贝格鲁普-布莱特

增强问题:

aichao 的答案非常适合所提出的问题,尽管事实证明还需要另一个步骤。当创建了包含与三个“感兴趣的工作”相关的工作的 work.list 时,在此示例中为工作 1、5、7。然后,对于真实数据,杂乱的数量使另一个步骤变得可取:只保留与三个感兴趣的工作之间的直接联系,而其他工作之间的联系被设置为零。

上面的数据并没有很好地描述这一点,所以我创建了上面的一个非常版本来演示这一点:

通过使用aichaos解决方案:

然后我们得到这个:

然而,工作 2 和工作 3 之间的联系是无关紧要的,只是用来掩盖利益联系。

在 job.dat.result 中,作业 3 和作业 2 之间的关联已被删除,无论是按行还是按列,但保留这两个作业与三个感兴趣的作业之间的关联。理想情况下,应该可以选择作业 2 和作业 3 的对角线是否也应为零。但最有可能的是,对于所有工作,我会将对角线设置为零,因此这不是必需的。但是会很好,如果没有别的,那么让我在更高的层次上理解这个逻辑。

除其他外,我想要实现的是这样的圆图:

在此处输入图像描述

因此,关系数量的简单性很重要。该图是这样复制的:

0 投票
1 回答
71 浏览

algorithm - 算法 - 网格图查找具有特定属性的子块数量

我有一个网格图 NxN。每个单元格的值可能为“0”或“1”。我正在尝试找到包含特定数量“1”的地图不同矩形子块的确切数量,这个数字可以在 1 到 6 之间。我考虑过搜索每个可能的矩形,但这很慢对于大小为 500x500 的地图,对于普通台式计算机,解决方案必须为 ~ 1 秒。有人可以告诉我一个相应的问题,这样我就可以寻找一个有效的算法,或者有人可以建议我一个解决这个问题的有效算法吗?谢谢大家!

0 投票
2 回答
54 浏览

r - 在两列上分组并执行多个计算

我目前正在使用一个包含大约 20 列和很多行的大型数据框。

简化后可以如下所示:

我想对特定的值集进行一些计算。这些是字母和数字的独特组合。因此,所有具有字母 A 和数字 1 的值都可以求和、计数(或 count_not_zero)、取最小值或其他(更复杂的)计算。我的目标是用这些独特的组合及其计算制作一个新的数据框。

我尝试以多种方式做到这一点。例如,用字母 A(在这种情况下)制作一个矩阵列表,然后在选择单个字母时使用聚合。然而,这变得非常大。

我尝试了几种 DPLYR 包的组合,但很难进行不同类型的计算,尤其是自制的。

0 投票
0 回答
533 浏览

indexing - 更新 Tensorflow 中的子矩阵

很简单,我想做的是以下

除了在 Tensorflow 中(矩阵可以是任意复杂的张量表达式)。既不是 Tensorflow 变量,也不是一个普通的张量AB

到目前为止我收集到的内容:张量是不可变的,所以我不能分配给子矩阵。tf.scatter_nd是子分配的当前选项,但似乎不支持子矩阵,仅支持切片。

应该有效但可能并不理想的方法:

  • 我可以用零填充 B,但我确信这会导致不必要的大 B 的实例化——它可以变得稀疏吗?
  • 我可以使用填充的想法,但将其写为低秩分解,例如在 Numpy 中:A+U.dot(B).U.T其中U是堆叠的零和单位矩阵。我不确定这实际上是否有利。
  • 我可以拆分A为子矩阵,然后将它们堆叠在一起。可能是最有效的,但听起来代码会很复杂。

理想情况下,我想对逐渐变小的矩阵执行此操作 N 次,从而产生一个大的最终结果,但这是切线的。

我现在将使用其中一种技巧,但我希望有人能告诉我惯用的版本是什么!

0 投票
1 回答
83 浏览

arrays - Matlab:组装其#cols和#rows存储在向量中的子矩阵

我有两个向量RC,它们分别具有我需要在一个矩阵I (40x20) 中组装的子矩阵的行数和列数。总共有 12 个子矩阵。

此外,每个子矩阵的所有元素的值都存储在向量k中:

因此,例如,子矩阵M (1:4,1:4) 有 4 行和 4 列,并且值等于 k(1) = 1。

问题:如何将矩阵 M 与所有子矩阵组合在一起?

有任何想法吗?谢谢!

编辑

矩阵 M 应如下所示: 在此处输入图像描述

和子矩阵:

在此处输入图像描述

和 k 的值:

在此处输入图像描述

0 投票
1 回答
71 浏览

arrays - 子矩阵/向量取决于数组中的值

我有一个A大小为 20x500x68 的 3D 矩阵。我有两个向量携带关于这个矩阵的信息,它们是:(
B包含零和一)大小为 1x68 和
C(包含从 1 到 3 的数字)大小为 1x68
(长度都B对应C于 的第三维A)。

我想创建一个A只有第三维的“子矩阵”,其中B==1C==3

示意图:

有没有办法在没有循环的情况下做到这一点?