У меня есть большой массив двоичных чисел, и я хочу выполнить побитовое ИЛИ над одним измерением массива:
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
, но я не думаю, что это так.
ОК, @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
.
union_of_bits_on_dim2
? - person Divakar   schedule 26.02.2015