在Matlab二进制向量中组合数据元素

时间:2012-04-27 00:06:46

标签: matlab binary

我想知道是否有matlab函数根据另一个单独的整数数组组合matlab二进制数据数组中的数据。请看下面的例子。

d = [1 0 0 1 1 0 1 0 1 1 0 1 0]
c = [2 2 3 2 4]

我想根据 c 数组添加 d 数组的元素,Thet表示, 执行modulo-2添加添加前2个元素d(1)+d(2) ,然后d(3)+d(4)的mod-2 ,然后d(5)+d(6)+d(7)的mod-2 等...

真的很感激,如果有人可以让我知道一个matlab函数来执行此操作而不使用太多for循环。

感谢。

2 个答案:

答案 0 :(得分:0)

一种方法是首先创建一个包含2x1,2x2,3x3,2x4等的数组,然后使用accumarray来总结d

中的元素
idxVector = zeros(size(d));
idxVector(cumsum(c(1:end-1))+1) = 1;
idxVector = cumsum(idxVector) + 1;
out = accumarray(idxVector(:),d(:))

out =

     1
     1
     2
     1
     2

答案 1 :(得分:0)

mod(diff([0 arrayfun(@(n) sum(d(1:n)), cumsum(c))]),2)