问题标签 [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 投票
2 回答
3892 浏览

algorithm - 求最大子矩阵算法

我有一个 N*N 矩阵(N=2 到 10000),其范围可能从 0 到 1000。如何找到包含相同数字的最大(矩形)子矩阵?

例子:

输出应该是子矩阵的区域,后跟其左上角元素的从 1 开始的坐标。例如,这是因为在第 2 列第 1 行(6, 2, 1)有六个s。9

0 投票
11 回答
69398 浏览

algorithm - 获得最大和的子矩阵?

输入:一个二维数组 NxN - 矩阵 - 具有正负元素。

输出:任意大小的子矩阵,使得其总和是所有可能子矩阵中的最大值。

要求:算法复杂度为O(N^3)

历史:在算法专家 Larry 和 Kadane 算法的修改的帮助下,我设法部分解决了仅确定求和的问题 - 下面是 Java。
感谢Ernesto,他设法解决了剩下的问题,即确定矩阵的边界,即左上角、右下角 - 在 Ruby 下方。

0 投票
3 回答
3677 浏览

matlab - 八度:来自矩阵的多个子矩阵

我有一个大矩阵,我想从中收集一组子矩阵。如果我的矩阵是 NxN 并且子矩阵大小是 MxM,我想收集I=(N - M + 1)^2子矩阵。换句话说,我希望原始矩阵中的每个元素都有一个 MxM 子矩阵,这些元素可以位于此类矩阵的左上角。

这是我的代码:

输出如果 a) 错误,并且 b) 暗示big_mat(x:x+M-1, y:y+M-1)表达式中有一些东西可以让我得到我想要的东西,而不需要两个 for 循环。任何帮助将非常感激

0 投票
3 回答
12576 浏览

c - 如何从更大的矩阵中提取 2x2 子矩阵

我是一个非常基础的用户,对 C 中使用的命令不太了解,所以请多多包涵……我不能使用非常复杂的代码。我对 stdio.h 和 ctype.h 库有一些了解,但仅此而已。我在 txt 文件中有一个矩阵,我想根据我输入的行数和列数加载矩阵

例如,我在文件中有一个 5 x 5 矩阵。我想提取一个特定的 2 x 2 子矩阵,我该怎么做?

我使用以下方法创建了一个嵌套循环:

可悲的是代码不起作用..如果我有这个矩阵:

并为行输入 3,为列输入 3,我得到:

这不仅不是 2 x 2 子矩阵,而且即使我想要前 3 行和前 3 列,它也无法正确打印它......

我需要从第 3 行和第 3 列开始,然后取 2 x 2 子矩阵!

我应该最终得到:

我听说我可以使用 fgets 和 sscanf 来完成这个。这是我的试用代码:

但这也不起作用:(

我究竟做错了什么 ?

请帮忙。谢谢 !

0 投票
2 回答
4299 浏览

algorithm - 在 O(n^2) 中找到具有最大可能和的子矩阵

我正在尝试用 Java 编写一个程序,当给定一个 MxN 矩阵时,它将找到具有最大数字总和的(连续)子矩阵。然后程序需要返回子矩阵的左上角坐标和右下角坐标。矩阵可以包含负数,并且矩阵和子矩阵都不需要是正方形。

我看到这里讨论过这个问题:Getting the submatrix with maximum sum? 并且那里的解决方案似乎是O(n ^ 3)。我的一个朋友说他们曾经设法在 O(n^2) 中解决了这个问题。这里也建议那可能吗?

有没有可用的代码以最有效的方式解决这个问题?

0 投票
0 回答
1519 浏览

c++ - OpenCV用C++在循环中选择合适的子矩阵

我对opencv相当陌生。我正在尝试编写一个循环,对大型(~1000 x ~1000)矩阵的小(9x9)子矩阵进行一些处理。基于一些掩码矩阵,我决定是否在大矩阵中的特定点处理 9x9。根据我阅读的文档,我试图将这行代码放在一个循环中:

i 和 j 是较大矩阵的行、列索引。然后我有一个处理 tempROI 的函数。然而,我发现我的 ROI 的大小随着 i 和 j 的增加而增加。我甩了一个:

进入循环调试。我看到我的投资回报率正在显着增加。例如,这是一个随机转储:

ROI 大小 = 191、9。对于 IDX = 4、186

显然有些东西不能正常工作,我认为这是一个公平的假设,即谬误在于我对如何从更大的子矩阵中正确选择子矩阵的理解。有人可以建议解决此问题的最佳方法是什么吗?

在相关说明中,我真的希望只使用一个指针,而不是在每次循环迭代时实际创建矩阵头。

简而言之 - 做我想做的事情的正确方法是什么?非常感谢。

0 投票
6 回答
501215 浏览

r - 选择满足条件的矩阵行

在带有矩阵的 R 中:

我想提取其行的第三列 = 11 的子矩阵。即:

我想在不循环的情况下做到这一点。我是 R 新手,所以这可能很明显,但文档通常有点简洁。

0 投票
4 回答
11534 浏览

python - 切片稀疏(scipy)矩阵

我将不胜感激任何帮助,以了解从 scipy.sparse 包中切片 lil_matrix (A) 时的以下行为。

实际上,我想根据行和列的任意索引列表提取子矩阵。

当我使用这两行代码时:

一切都很好,我可以提取正确的子矩阵。

当我尝试在一行中执行此操作时,它失败了(返回矩阵为空)

为什么会这样?总的来说,我在 matlab 中使用了一个类似的命令,并且它在那里工作。那么,既然它有效,为什么不使用第一个呢?这似乎非常耗时。由于我必须浏览大量条目,因此我想使用单个命令加快速度。也许我使用了错误的稀疏矩阵类型......知道吗?

0 投票
4 回答
19931 浏览

java - 查找给定矩阵的子矩阵

我正在尝试编写一种算法来在给定的子矩阵中查找子矩阵。为了解决这个问题,我编写了以下代码:

这段代码工作正常,但我不确定它是问题的确切解决方案还是只是一种解决方法。请提供您的专家意见。提前致谢。

0 投票
3 回答
15187 浏览

matlab - MATLAB:将列组提取到子矩阵中?

我有一个数据集,我想在其中提取第 1-3、7-9、13-15 列,一直到矩阵的末尾

例如,我使用了标准的魔法函数来创建一个矩阵

A=魔法(10)

一个=

我知道我可以使用以下命令以 3 的间隔从 1 开始提取单列:

Aex=a(:,1 : 3 : 结束)

Aex =

假设我想提取列组(例如列 1-3、7-9 等)。

有没有办法做到这一点而不必手动指出所有的列号?

谢谢你的帮助!拉斯穆斯