求解向量中连续字符串个数的问题MATLAB

matlab求解连续字符串计数有重复,想要它不重复计数

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);
输出结果不理想
若输入:A=[8 7 9 0 0 3 3 3 0 0 0 0 0 3 2 4 0 0 6 0 0]
则输出结果:
一个为零的是0.
两个为零的是3.
三个为零的是0.
四个为零的是0.
五个为零的是1.
六个为零的是0.
以此类推
21个为零的是0.
A = [1, 1, 1, 2, 2, 3, 4, 0, 0, 3, 3, 4, 0, 0, 0, 0, 5, 6];
 
for n = 2:21
    cnt = 0;
    acc = 0;
 
    for i = 1:length(A)
        if A(i) == 0
            acc = acc + 1;
        else
            if acc == n
                cnt += 1;
            end
            acc = 0;
        end
    end
 
    disp([num2str(n) '个为零的是' num2str(cnt) '\n']);
end
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7600294
  • 这篇博客你也可以参考下:【故障诊断分析】基于matlab滚动轴承故障诊断系统【含Matlab源码 1679期】
  • 除此之外, 这篇博客: 【一天一门编程语言】Matlab 语言程序设计极简教程中的 Matlab 语言程序设计极简教程 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    用 markdown 格式输出答案。 不少于3000字。细分到2级目录。

  • 您还可以看一下 硬核野生技术咨询客服小李老师的轻松入门MATLAB课程中的 入门matlab单元数组深入学习小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    由于没有提供具体的示例向量,我无法直接提供完整的代码解决方案。但是我可以给出一个可能的解决方案的伪代码,以帮助你理解如何在MATLAB中解决这个问题:

    % 假设向量是一个包含连续字符串的一维向量
    vector = [1 1 2 3 3 3 2 1 4 4 4 4 5 6 6 7];
    
    % 初始化变量
    count = 0;          % 连续字符串计数
    prevValue = NaN;    % 上一个值,用于比较是否连续
    
    % 遍历向量
    for i = 1:length(vector)
        if vector(i) ~= prevValue  % 如果当前值与上一个值不相等,则说明出现了新的连续字符串
            count = count + 1;     % 连续字符串计数加一
            prevValue = vector(i); % 更新上一个值为当前值
        end
    end
    
    count  % 输出连续字符串的个数
    

    这段代码的思路是遍历向量,通过比较当前值与上一个值是否相等来判断是否出现了新的连续字符串。如果当前值与上一个值不相等,则说明出现了新的连续字符串,并将连续字符串计数加一。

    请注意,这只是一个基本的思路,并不考虑向量的特殊情况和边界条件。根据具体的需求和数据结构,你可能需要对代码进行进一步的优化和改进。希望这可以帮助到你!


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