我想知道是否有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循环。
感谢。
答案 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)