Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 逻辑元素替换[3D矩阵]_Matlab_Matrix - Fatal编程技术网

Matlab 逻辑元素替换[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()函数的作业

假设我有两个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()
函数的作业

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,因为我需要知道哪些值已更改,以便对其他矩阵执行相同的操作!