4

我有一个关于矩阵分配的问题。

假设我有三个矩阵A,B和C,我想根据规则将矩阵C的元素分配给A和B的元素

  C[i,j] = A[i,j] if abs(C[i,j] - A[i,j]) < abs(C[i,j] - B[i,j])
  C[i,j] = B[i,j] if abs(C[i,j] - A[i,j]) > abs(C[i,j] - B[i,j])
  C[i,j] = 0  if abs(C[i,j] - A[i,j]) == abs(C[i,j] - B[i,j])

没有for循环我怎么写?

非常感谢您的帮助。

4

2 回答 2

5

我认为 Dan Becker 的想法是正确的,但重新计算abs(C-B)abs(C-A)暗示比较更新的矩阵,而不是原始矩阵。

我认为这不是你想要的,所以这是他方法的更正版本:

CmA = abs(C-A);
CmB = abs(C-B);

ind = Cma < CmB; C(ind) = A(ind);
ind = CmA > CmB; C(ind) = B(ind);
C(CmA == CmB) = 0;
于 2012-10-30T05:33:03.813 回答
1

我认为您需要以下内容:

ind = abs(C - A) < abs(C - B) ; C(ind) = A(ind);
ind = abs(C - A) > abs(C - B) ; C(ind) = B(ind);
ind = abs(C - A) == abs(C - B) ; C(ind) = 0;
于 2012-10-30T05:13:19.923 回答