Matlab 逻辑元素替换[3D矩阵]
假设我有两个3D矩阵:Matlab 逻辑元素替换[3D矩阵],matlab,matrix,Matlab,Matrix,假设我有两个3D矩阵: A = rand(10,4,100); B = rand(10,4,100); L = gt(A,B); 现在我想用A的元素替换B的所有元素,仅在L==1的地方,但这不起作用: B(L==1,:,:) = A(L==1,:,:); 有什么建议吗?听起来像是find()函数的工作 p = find(L); B(p) = A(p); 编辑:刚刚意识到您不需要find()函数。只需使用如下逻辑索引: B(L==1) = A(L==1); 听起来像是find()函数的作业
A = rand(10,4,100);
B = rand(10,4,100);
L = gt(A,B);
现在我想用A
的元素替换B
的所有元素,仅在L==1的地方,但这不起作用:
B(L==1,:,:) = A(L==1,:,:);
有什么建议吗?听起来像是find()
函数的工作
p = find(L);
B(p) = A(p);
编辑:刚刚意识到您不需要find()
函数。只需使用如下逻辑索引:
B(L==1) = A(L==1);
听起来像是find()
函数的作业
p = find(L);
B(p) = A(p);
编辑:刚刚意识到您不需要find()
函数。只需使用如下逻辑索引:
B(L==1) = A(L==1);
我们还没有找到的更短的
我们还没有找到的更短的
如果L
始终计算为gt(A,B)
,为什么不直接使用B=max(A,B)代码>?@LuisMendo,因为我需要知道哪些值已更改,以便对其他矩阵执行相同的操作!如果L
始终计算为gt(A,B)
,为什么不直接使用B=max(A,B)代码>?@LuisMendo,因为我需要知道哪些值已更改,以便对其他矩阵执行相同的操作!