-2

我需要找到数组中 1 位的位置和 1 之前的 0 位的数量。这意味着在下面的数组中我需要实现placeOfOne=3 numberOfZeros=2

a = [0 0 1 0]

我们对此有什么功能吗?最好的,埃尔纳兹

4

4 回答 4

2

按照您的示例,我假设您的输入向量仅包含“1”和“0”的二进制值。

如果您正在寻找“1”的位置,请按照find每个人的建议使用。零的数量应该总是“1”的位置减去前面“1”的数量:

placeOfOne = find(a);
numberOfZeros = placeOfOne - (1:numel(placeOfOne));

如果您只寻找第一个“1”,请添加第二个参数。这减少到:

placeOfOne = find(a, 1);
numberOfZeros = placeOfOne - 1;
于 2013-04-24T14:20:40.053 回答
1

使用find获得 1 的位置

placeOfOne = find(a)

然后在此之前总结零:

numberOfZeros = sum(a(1:placeOfOne)  == 0)
于 2013-04-24T14:05:12.060 回答
0

isMember如果存在 0 和 1 以外的元素,则可以使用该函数。

另外,如果只有 0 和 1,那么零的数量应该是(position of 1) - 1,不是吗?

于 2013-04-24T14:05:41.923 回答
0

略有不同的做法

a = [0 0 1 0];
placeOfOne = find(a==1);
digitsBeforeOne = a(1:placeOfOne);
numberOfZeros= length(find(digitsBeforeOne ==0));
于 2013-04-24T14:12:27.743 回答