Matrix Matlab的Julia等价物&x27;s&x201C;逻辑”;矩阵

Matrix Matlab的Julia等价物&x27;s&x201C;逻辑”;矩阵,matrix,boolean,julia,Matrix,Boolean,Julia,Matlab的“逻辑”矩阵是否有Julia等价物,可用于标记矩阵中的某些位置,然后用于矩阵操作 在matlab中,它如下所示: A=magic(3); C=eye(size(A)); C=logical(C); M=A; M(C)=0; 我需要在主对角线上保持零。在matlab中我会这样做,但在Julia中没有“逻辑”矩阵。我找了朱莉娅,但什么也没找到。提前谢谢 您可以创建一个或一个数组ofBools,用于 例如 您可以使用它通过逻辑not运算符将另一个矩阵中的元素归零,然后将另一个矩阵中的每

Matlab的“逻辑”矩阵是否有Julia等价物,可用于标记矩阵中的某些位置,然后用于矩阵操作

在matlab中,它如下所示:

A=magic(3);
C=eye(size(A));
C=logical(C);
M=A;
M(C)=0;
我需要在主对角线上保持零。在matlab中我会这样做,但在Julia中没有“逻辑”矩阵。我找了朱莉娅,但什么也没找到。提前谢谢

您可以创建一个或一个
数组
of
Bool
s,用于

例如

您可以使用它通过逻辑not运算符将另一个矩阵中的元素归零,然后将另一个矩阵中的每个元素相乘(通过使用
*
广播
*

例如:

> x = reshape(1:9,3,3)
 1  4  7
 2  5  8
 3  6  9

> x .* .~I(3)
 0  4  7
 2  0  8
 3  6  0

非常感谢您的详细回答!这解决了我的问题,我也学到了一些新的东西。。。祝你一切顺利!你可以做得更简单,你可以写:
x[I(3)]。=0
。另一种不使用逻辑索引的方法是使用线性代数标准库中的
diagind
x[diagind(x)]。=0
@DNF-谢谢-对于我使用的特定示例(
重塑(1:9,3,3)
),我必须
将范围收集到一个数组中,这是一个额外的步骤。但是对于许多数组,直接索引将不需要额外的工作。
> x = reshape(1:9,3,3)
 1  4  7
 2  5  8
 3  6  9

> x .* .~I(3)
 0  4  7
 2  0  8
 3  6  0