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

matlab - 如何在给定条件下删除矩阵子矩阵元素?

我知道一个矩阵说mat,如果我想删除所有满足特定条件的元素(元素方式),例如删除所有零,这会做:

但是我怎么能做这个子矩阵,即在给定条件下删除矩阵子矩阵元素。例如,data4d是一个大小为 的 4D 矩阵n1 x n2 x n3 x n4i如果第四维的-th( 1=<i<=n4)子矩阵的所有元素,即data4d(:, :, :, i) == zeros(n1, n2, n3),则将其删除,即data4d(:, :, :, i) = []

for如果没有简单的循环,我怎么能做到这些?以下两个版本都不起作用:

0 投票
1 回答
212 浏览

matlab - 没有循环的子矩阵索引和操作

我有以下问题:我有一个矩阵,20 x 1000我想把它分成四个大小的子矩阵20 x 250

之后,我想对每个子矩阵进行操作,假设我有一个P长度等于子矩阵数量 4 的向量。

我打算为每个子矩阵(A)做的事情如下:

对于第一个子矩阵: A(:,1:P(1))=1

以及第二个子矩阵:A(:,1:P(2))=1等等。

没有循环我怎么能做到这一点?

0 投票
1 回答
103 浏览

matlab - 在 Matlab 中添加两个子矩阵?

我有一个5x5矩阵 M = magic(5) and I must add two sub-matrices of it (using thesum command) and store it inG`,它们是:

M(1:3,1:3)M(3:5,3:5)

我写了这个,但我不确定它是否正确,

0 投票
1 回答
252 浏览

c - 如何有效地仅反转分配矩阵的一部分

我有一个算法,它分配一个具有预定义大小 N x N 的复数双矩阵“A”。元素最初为零。我还分配了大小为 N x N 的矩阵来存储逆矩阵“A_inv”。在算法期间,“A”的元素被填充。在每次迭代 i 时,我都会得到一个大小为 ix i 的子矩阵。所以第二次迭代看起来像这样,其中 N=4:

其中 x 表示一些非零值。现在我希望反转矩阵的非零部分(本例中为 2x2 矩阵)。到目前为止,我一直在通过以下方式做到这一点:

  1. 将“A”的非零元素复制到 2x2 gsl 矩阵
  2. 使用 gsl LU 分解来反转 2x2 gsl 矩阵
  3. 将 2x2 倒置矩阵复制到 A_inv

这种方法的问题是我必须在每次迭代中复制一个矩阵两次。一次到较小的 nxn gsl 矩阵,一次将生成的反向 nxn gsl 矩阵复制到 A_inv。

我想知道是否有人知道更直接的方法。有没有办法使用一些 gsl 函数来仅反转矩阵的一部分并忽略任何零元素?说这样的话:

其中 n < N。这里invert_submatrix()只考虑 A 的 nxn 部分。此外,原始矩阵“A”不能被这种反转改变。也许最后的需求使得无论如何都必须复制矩阵,在这种情况下,它不会比我现在做的更有效率。也就是说,gsl 算法往往比我通常想出的任何方法都高效得多。因此,对此的想法仍然非常受欢迎。

0 投票
1 回答
1759 浏览

r - 将矩阵拆分为子矩阵

我找到了一个类似问题的解决方案,当矩阵可能不是正方形时(因为它可能不是我的情况),将矩阵分解为一组不重叠的子矩阵R。 _ 但是,就我而言,我希望矩阵重叠。以以下矩阵为例:

如果我选择子矩阵的行数和列数分别为 4 和 4,那么返回的子矩阵应该是完全适合原始矩阵边界的每个可能重叠的 4X4 子矩阵(这是另一个地方这个问题的答案可能需要与我引用的问题不同)。在我的示例中,应该只返回两个子矩阵。 M[1:4,1:4]M[2:5,1:4]。我应该能够选择任意大小的子矩阵。我似乎找不到任何提取重叠子矩阵的例子,但我可能想多了。有人对解决此问题的最佳方法有任何想法吗?

0 投票
2 回答
310 浏览

matlab - 是否可以显示所有子矩阵,每个子矩阵都由 matlab 中的一个变量表示?

是否有任何内置函数可以显示matlab中矩阵的所有子矩阵?为了显示一个子矩阵,我们有函数 x(:,m:n)。例如:考虑一个 4 x 4 矩阵

如果所有子矩阵的大小为 1 x 2 ,如何显示 A 中存在的所有子矩阵?还如何用变量表示每个子矩阵(例如;a1,a2..etc)

如何以元胞数组的形式显示所有子矩阵?请帮忙。提前致谢

0 投票
0 回答
38 浏览

matlab - Matlab中如何从矩阵中选择一个子矩阵

我有一个大小为500 * 600的大型复杂矩阵A,但我只需要使用矩阵 A中的一个小子矩阵。

在 Matlab 2013R 中是否可以通过选择行和列的开始和结束范围来做到这一点?

0 投票
1 回答
43 浏览

matlab - 基于大小向量的子矩阵

看起来这个问题应该很常见,但我还没有找到一个好的副本......

我正在实现一个具有可变大小的多维输出的 2 级 S 函数。状态必须在固定大小的 Dwork 向量中,因此我将输入矩阵零填充到输入允许的最大大小,然后将其重塑为向量。

当我将其重新整形为矩阵以进行输出时,我需要将其修剪回正确的大小。

该函数需要足够通用以支持任意数量的维度。输出的大小存储在大小数组中。

例如,我可能有一个 500x500 的矩阵 N,和一个大小数组 S = [40 25]。我需要一个可以给我 N(1:S(1), 1:S(2)) 的 MATLAB 表达式,但它需要适用于任意数量的维度,所以我不能像那样简单地对其进行硬编码。

0 投票
1 回答
1129 浏览

algorithm - 如何计算矩阵的子矩阵

我正在为一家名为 Code Nation 的公司进行测试,遇到了这个问题,该问题要求我计算数字 k 在子矩阵 M[n][n] 中出现的次数。现在有一个例子这样说输入。

M[i][j]是计算a[i]*a[j] 在计算轮我可以计算的。

现在我必须计算 36 在 M 的子矩阵中出现了多少次。

答案是 5。

我无法理解如何计算这个子矩阵。如何表示? 我有一种天真的方法,导致了许多我认为没有一个是正确的矩阵。

其中之一是 Submatrix[i][j]

这是通过将 0,0 之前的所有数字添加到 i,j

在这 36 中没有出现 5 次,所以我知道这是不正确的。如果你可以用一些伪代码来备份它,那将是锦上添花。

感谢帮助

[编辑]:参考以下链接 1 链接 2

0 投票
3 回答
328 浏览

matlab - Matlab:按一定标准从矩阵中选择子矩阵

我有一个矩阵 A

第一列是公司代码。其余列是公司的数据,每一行指的是给定年份第 1 列中的公司。请注意,对于每家公司来说,年份可能并不平衡。我想根据第一列减去子矩阵。例如,A(1:3,2:11)对于 931142103:

459200101(which would be A(4:7,2:11)) 和A(8:10,2:11)for相同37833100.

我觉得代码应该是这样的:

我很难索引这些复杂的代码:459200101并将37833100它们收集在一起。我怎样才能写出我的子矩阵的行A{i}

非常感谢!