【发布时间】:2015-02-26 15:52:32
【问题描述】:
我有一个大的二进制数数组,我想对数组的一维进行按位或:
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? -
OK 给出了一个使用循环的例子
-
你的号码是什么数据类型?双 |整数8 |整数 16 |整数32 |整数64 | uint8 | uint16 | uint32 | uint64?还是您只想要无符号整数的通常二进制表示?
标签: matlab bitwise-or