matlab在一个向量中计算重复为零的字符串的 个数

matlab如何写出一个程序解决问题如下:
求一个循环向量中,0元素连续重复出现两次以上的字符串 并计数。
比如:A=[1 1 1 2 2 3 4 0 0 3 3 4 0 0 0 0 5 6 ],那么通过程序可以到两个连续为零字符串的个数为1,四个连续为零的字符串个数为1。
B=[0 1 1 0 0 0 0 2 2 3 0 0 2 3 3 0 0 4 5 0],通过程序可以得到两个连续为零的字符串的个数为3(循环序列),四个连续为零字符串的个数为1。
C=[1 2 3 4 0 0 0 0 0 4 0 5 9 0 0 3 0 3 0 0 0 3 ],通过程序可以得到两个连续为零的字符串个数为1,三个连续为零的字符串个数为1,五个连续为零字符串的个数为1。

A = [1, 1, 1, 2, 2, 3, 4, 0, 0, 3, 3, 4, 0, 0, 0, 0, 5, 6];
n = 2;

cnt = 0;
acc = 0;

for i = 1:length(A)
    if A(i) == 0 && acc < n - 1
        acc = acc + 1;
    elseif A(i) == 0 && acc >= n - 1
        cnt = cnt + 1;
        acc = 0;
    else
        acc = 0;
    end
end

disp(cnt);

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7688746
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以通过以下步骤来解决这个问题:

    1. 首先,定义一个函数来统计向量中连续重复出现两次以上的零的字符串个数。

    2. 在该函数中,创建一个计数变量count,并初始化为0。

    3. 使用一个循环遍历整个向量A。

    4. 在循环中,判断当前元素是否为零。

    5. 如果当前元素为零,则判断下一个元素是否也为零。

    6. 如果下一个元素也为零,则继续向后判断,直到找到第一个不为零的元素,或者到达向量末尾。

    7. 记录下连续的零的个数,并判断是否连续重复出现两次以上的零的字符串。如果是,则计数变量count加1。

    8. 继续遍历向量A,直到遍历完所有元素。

    9. 返回计数变量count,表示连续重复出现两次以上的零的字符串个数。

    以下是用Matlab编写的实现代码,用于解决这个问题:

    function count = countZeroStrings(A)
        count = 0;
        len = length(A);
    
        for i = 1:len
            if A(i) == 0
                j = i + 1;
                while j <= len && A(j) == 0
                    j = j + 1;
                end
    
                zero_count = j - i;
                if zero_count >= 2
                    count = count + 1;
                end
    
                i = j - 1;
            end
        end
    end
    

    你可以调用这个函数,并传入向量A、B或C来测试。当然,你也可以定义其他的向量来测试这个函数。

    希望以上解答能够解决你的问题,如果有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^