1

我想知道是否有一个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意味着,执行模2加法添加前2个元素 ,然后mod-2 of ,然后mod-2 of etc...d(1)+d(2)d(3)+d(4)d(5)+d(6)+d(7)

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

谢谢。

4

2 回答 2

0
mod(diff([0 arrayfun(@(n) sum(d(1:n)), cumsum(c))]),2)
于 2013-12-13T17:54:20.517 回答
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
于 2012-04-27T00:17:42.220 回答