仅在 MATLAB 中使用特定值矩阵乘法

Only with specific values matrix multiplication in MATLAB

代码如下:

X = [3 2 0; 5 0 7; 0 0 1];
Y = [0 0 0; 256 256 0; 256 256 0];
[row,col] = find(Y==0);
[row,col]

及其结果:

ans =

     1     1
     1     2
     1     3
     2     3
     3     3

我在第二个矩阵中找到了 0 个值。我的问题是我想用第一个矩阵中的 0 替换(或者我们可以乘以)其他值并获得 Z 矩阵。

例如,Z 矩阵将是:

Z = [0 0 0; 5 0 7; 0 0 0]

我怎样才能做到这一点?

我相信你想描述的是:

Given a list of indices, say I, of 0-valued elements in some matrix Y, construct a new matrix Z from a give matrix X, but where the set of indices I in Z are set to 0. Limitation that X, Y and Z naturally have the same dimensions.

在这种情况下,您的示例略有偏差:我相信您的意思是示例中的 Z 应该看起来像

Z =

     0     0     0
     5     0     0
     0     0     0

您可以简单地通过

实现
  1. 正在将 X 的内容复制到 Z
  2. Z 中的索引 I 设置为 0,其中 I 对应于 Y 中具有零值元素的索引集。

即:

%// example
X = [3 2 0; 5 0 7; 0 0 1];
Y = [0 0 0; 256 256 0; 256 256 0];

Z=X;            %// 1. above
Z(Y==0) = 0;    %// 2. above

生成向量 Z 如上文所述。