2 進数の大きな配列があり、配列の 1 つの次元に対してビットごとの OR を実行したい:
X = [ 192, 96, 96, 2, 3
12, 12, 128, 49, 14
....
];
union_of_bits_on_dim2 = [
bitor(X(:,1), bitor(X(:,2), bitor(X(:,3), ... )))
];
ans =
[ 227
191
... ]
これを行う簡単な方法はありますか?私は実際にn次元配列に取り組んでいます。試してみbi2de
ましたが、配列が平坦化されるため、添え字が複雑になります。
matlabに機能があれば簡単にできたのですが、fold
ないと思います。
OK @Divakar は実行可能なコードを求めたので、ここで明確にするために、2D 配列で機能する可能性のある長いバージョンがあります。
function U=union_of_bits_on_dim2(X)
U=zeros(size(X,1),1);
for i=1:size(X,2)
U=bitor(U,X(:,i));
end
ループせずに実行できますか?bitor
もちろん、任意の数の引数を取ることができることを望んでいました。それなら、でできたはずmat2cell
です。