问题标签 [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 回答
911 浏览

algorithm - 子矩阵 NxN 矩阵和具有 N 个非零值的最大和,仅 O(N^2)

假设您有一个 N × N 矩阵,其中每一行正好有一个非零元素,每一列正好有一个非零元素(非零元素可以是正数或负数)。我们想找到最大和子矩阵。我们这样做的效率如何?

该矩阵的维度为 N × N,并且只有 N 个非零元素。N 太大了,所以我不能使用 O(N 3 ) 算法。有谁知道如何在 O(N 2 )、O(N log N) 或其他类似的时间复杂度上解决这个问题?

谢谢!

0 投票
1 回答
1209 浏览

c# - nxn 矩阵的最大子矩阵和

我试图从给定的 nxn 矩阵中获得最大的子矩阵总和。从我读到的算法的复杂性为 n^3(kadane)。我尝试使用我在 stackoverflow 上找到的代码(由 Anders Gustafsson 在这些帖子中用 C# 编写)在 java 中实现它,但它似乎并不总是有效。

我的代码是这样的:

我举了三个例子:

矩阵 1
-2 -3
-1 -4
输出为 0(空的 0x0 矩阵也是一个解决方案)

矩阵 2
2 -1
-2 -1
输出为 2

矩阵 3
-1 3
3 -1
输出是 3,但应该是 4

也许有人可以看到错误。我也对实施它的全新想法持开放态度。

0 投票
0 回答
237 浏览

r - 识别每个满足条件的子矩阵

在下面的矩阵中,我试图识别由 1 组成的每个最大矩形,如图所示。只有超过3列的矩形才能只有一行。只有超过3行的矩形才可以只有一列。矩形应该少于maxcol列和maxrow行,多于mincolminrow。图中mincol=minrow=2。最大行=最大列=6

尝试使用子集函数,但它提供了 1 的子矩阵,而不是每个叠加的矩形。

已识别的矩形

0 投票
1 回答
245 浏览

matlab - Matlab,定义子矩阵

我得到了一个 10x10 矩阵,其中包含一堆零和一个值为 1 的元素。我正在尝试创建一个元素为 1 及其周围元素的子矩阵。

问题:

在此处输入图像描述

这只是一个示例,元素“1”放置在矩阵中的任何位置。我确实意识到我可以使用 find 找到我的元素find(MATRIX==1)

如何定义我的 3x3 子矩阵?

0 投票
3 回答
6396 浏览

r - 如何使用行标题列表按行名对矩阵进行子集化

我有一个名字列表(mylist)。此名称列表与(更大)文件中的某些行名一致,该文件还包含其他数据列(大文件)。如何提取与“mylist”中的名称匹配的“bigfile”中的行?

0 投票
1 回答
815 浏览

matlab - 找到矩阵内的最大向量

我正在尝试使用 MATLAB 通过向量找到矩阵复合内的最大向量,但是我遇到了一些困难,所以如果有人帮助我,我将非常感激。我有这个:

矩阵路径(Dijkstra 函数的解),它是一个 1000x1000 矩阵,其值是 1 行和不同列数的向量(当列大于 10 时,值显示为“1x11 double, 1x12 double, etc ”)。矩阵路径具有以下形式:

起初我想在矩阵中找到最大的向量

然而 MATLAB 返回 B = 1000,这个值是可行的,但不太可能。当尝试使用以下方法找出向量的位置时:

MATLAB返回row = 1,column = 1,这肯定是错误的......我认为这可能是MATLAB如何获取数据的问题。就像它不将矩阵的条目视为向量一样,因为当我输入时:

它返回我 1,但据我所知,它应该返回 8,在介绍时也是如此:

它返回 [1x8 double]但我希望看到整个向量。我不知道该怎么办,也许是一个“for”循环,我真的不知道 MATLAB 是把矩阵的数据作为向量还是作为简单的双精度值。

0 投票
2 回答
277 浏览

matlab - Selecting submatrices at random given a set of constraints in MATLAB

New to programming here and I really have no idea how to approach this.

My problem: I have a bunch of images that are annotated with rectangular bounding boxes and want to pick other rectangular bounding boxes at random that do not overlap with the bounding boxes I already have. So basically I have a matrix M and a predefined subset X of submatrices of M and I want to generate new submatrices with random positions that do not overlap with X but can overlap with each other; the generated submatrices should be about the same size as the submatrices in X and contained in matrix M.

enter image description here

http://i.imgur.com/74AEI2x.png

In the example above, the boxes in that image represent X, positive exambles of soccer balls; I want to generate an equal number of boxes of the same size that do not enclose soccer balls, to represent negative examples of soccer balls.

Any direction is appreciated, I'm doing this in MATLAB.

0 投票
1 回答
115 浏览

matlab - 从单列数据集中提取行块以分隔连续列

我有一个数据集,其中包含 1 列中的所有数据。然而,每n行出现一个新的子数据集。使用 MATLAB,我需要获取每个子数据集并放置在单独的顺序列中。例如,这个:

第 1 列

进入这个:

第 1 栏 | 第 2 栏 | 第 3 栏 | ...

0 投票
1 回答
935 浏览

python - 在python中的特定坐标处替换矩阵的元素

我正在尝试解决一个“非常简单”的问题。在 Python 中不是那么简单。给定一个大矩阵 A 和另一个较小的矩阵 BI 想用 B 替换 A 的某些元素。在 Matlab 中是这样的:

在 Python 中,我尝试使用product(row_coord, col_coord)fromitertools来生成需要在 A 中访问的所有索引集,但它不起作用。所有关于子矩阵替换的示例都参考了逐块 row_coord = col_coord 示例。除了http://comments.gmane.org/gmane.comp.python.numeric.general/11912之外,没有什么具体的东西似乎与我面临的问题有关,并且链接中的代码不起作用。

注意:我知道我可以通过双 for 循环实现我需要的东西,但是在我的数据上,这样的循环增加了一次迭代的运行时间 9 秒,我正在寻找一种更快的方法来实现它。

任何帮助将不胜感激。

0 投票
2 回答
173 浏览

python - 将矩阵创建为具有来自另一个矩阵的列子集

给定列索引的列表(或元组),我需要通过从另一个矩阵中选择列的子集来生成一个新矩阵。

以下是我正在处理的代码(不仅仅是尝试创建一个新矩阵,但可能对您有一些上下文感兴趣)。

具有以下输出:

现在我希望从对象中轻松找到一种方法,该方法matrix允许通过仅将元组p作为参数来构造具有列子集的新矩阵,但找不到类似的东西。

关于如何以圣人友好的方式优雅地解决这个问题的任何想法?(避免for循环和多余的代码)

谢谢!