我需要找到数组中 1 位的位置和 1 之前的 0 位的数量。这意味着在下面的数组中我需要实现placeOfOne=3
numberOfZeros=2
:
a = [0 0 1 0]
我们对此有什么功能吗?最好的,埃尔纳兹
我需要找到数组中 1 位的位置和 1 之前的 0 位的数量。这意味着在下面的数组中我需要实现placeOfOne=3
numberOfZeros=2
:
a = [0 0 1 0]
我们对此有什么功能吗?最好的,埃尔纳兹
按照您的示例,我假设您的输入向量仅包含“1”和“0”的二进制值。
如果您正在寻找“1”的位置,请按照find
每个人的建议使用。零的数量应该总是“1”的位置减去前面“1”的数量:
placeOfOne = find(a);
numberOfZeros = placeOfOne - (1:numel(placeOfOne));
如果您只寻找第一个“1”,请添加第二个参数。这减少到:
placeOfOne = find(a, 1);
numberOfZeros = placeOfOne - 1;
isMember
如果存在 0 和 1 以外的元素,则可以使用该函数。
另外,如果只有 0 和 1,那么零的数量应该是(position of 1) - 1
,不是吗?
略有不同的做法
a = [0 0 1 0];
placeOfOne = find(a==1);
digitsBeforeOne = a(1:placeOfOne);
numberOfZeros= length(find(digitsBeforeOne ==0));