我有两个三维矩阵A和B,A和B的大小都是40*40*20倍。矩阵A和B中的值要么为0,要么为1。A中的"1“数为100,B中的"1”数为50。矩阵A和B中的"1“可能在同一坐标下,也可能不在同一坐标下。我想得到矩阵A和B的并,称为C,三维矩阵C中的值要么是"1“,要么是"0”。C中"1“的数目小于或等于150。我的问题是如何在Matlab中得到三维矩阵C?
发布于 2015-07-19 21:50:08
你可以用两种方式来接近它。更有效的方法是使用向量,但也可以在经典的嵌套for循环中这样做。
A = rand(40,40,20);
A = A > 0.01; # Get approximate 320 ones and rest zeros
B = rand(40,40,20);
B = B > 0.005; # Get approximate 160 ones and rest zeros
C = zeros(size(A));
for iter1 = 1:size(A,1)
for iter2 = 1:size(A,2)
for iter3 = 1:size(A,3)
C(iter1,iter2,iter3) = A(iter1,iter2,iter3)|B(iter1,iter2,iter3)
end
end
end
这种方法会很慢。您可以将其向量化以提高性能。
C = A|B
https://stackoverflow.com/questions/31506483
复制