nos*_*nos 4 indexing matlab conditional matrix variable-assignment
我对矩阵分配有疑问.
说我有三个矩阵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])
Run Code Online (Sandbox Code Playgroud)
如何在没有for循环的情况下编写它?
非常感谢您的帮助.
我认为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;
Run Code Online (Sandbox Code Playgroud)