MATLAB 操作的 Armadillo 等价物

Posted

技术标签:

【中文标题】MATLAB 操作的 Armadillo 等价物【英文标题】:Armadillo equivalent for MATLAB operations 【发布时间】:2015-03-09 19:32:40 【问题描述】:

您好,我是犰狳的新手。我正在寻找在 MATLAB 中执行以下操作的 Armadillo 等效项:

B(B_t>=0) = 1;
B(B_t<0) = -1;

这里 B 和 B_t 是两个具有相同维度的矩阵。 我可以在这里使用犰狳符号函数(sign),但是我需要将所有零元素设置为一。我确信这是一个简单的问题。感谢您的帮助。

另外,谁能告诉我如何将犰狳矩阵中的非连续索引设置为特定值?

谢谢。

【问题讨论】:

你的标题和第二句话似乎矛盾。您正在寻找哪些操作的等价物? @Benoit_11 - 他们很可能希望在 MATLAB 语法建立后找到等效的 Armadillo 语法。阅读整个帖子,这就是它的样子。我已经修改了正文以避免进一步混淆。 【参考方案1】:

如果您有两个相同维度的矩阵 A 和 B,您可以将 B 的对应元素大于 0 的 A 的所有元素设置为一个值

using namespace arma;

// A and B are matrices of the same shape.
mat A = randu<mat>(5,5) - 0.5;
mat B = randu<mat>(5,5) - 0.5;

// Change elements of A where B > 0 to 10.0
A.elem( find(B > 0) ).fill(10.0);

我们使用find 生成满足所需标准的指标列表。 .elem 然后创建 A 的这些元素的视图。最后 .fill 将这些元素设置为所需的值。

【讨论】:

感谢西蒙的回答。

以上是关于MATLAB 操作的 Armadillo 等价物的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu21.10下安装使用Armadillo库

Ubuntu21.10下安装使用Armadillo库

Matlab + Armadillo 和逆矩阵崩溃

犰狳的求解(A,b)从 Matlab,Eigen 返回不同的答案

在matlab中使用mex + armadillo时pinv返回svd失败

什么是Matlab的tic和toc函数的Python等价物?