如图所示为一个值为0和1的一维矩阵,请问如何用MATLAB统计数字为0的区域的个数?
答案:1 悬赏:0 手机版
解决时间 2021-11-23 17:52
- 提问者网友:沉默菋噵
- 2021-11-23 12:53
如图所示为一个值为0和1的一维矩阵,请问如何用MATLAB统计数字为0的区域的个数?
最佳答案
- 五星知识达人网友:酒者煙囻
- 2021-11-23 14:02
i=1;
number=0;
while(i~=size(A,1))
if(A(i)==0)
number=number+1;
for j=i:size(A,1)
if(A(j)==1)
break;
end
end
i=j;
else
i=i+1;
end
end
我没有上机试一下,不过思路应该没错。追问我试了一下,将这段代码代入我的程序中,并拓展到5000行的向量的情况,结果系统说:i=1: 输入字符不是 MATLAB 语句或表达式中的有效字符。这是什么情况?追答哦哦,可能是我打了中文下的冒号,你改成英文的追问程序好像有点漏洞,a=[1;1;0;1;0;1;0;0;1;0];这个矩阵,number=3,但是实际应该为4,这是为什么,应该如何修改?追答a=[1 1 0 1 0 1 0 0 1 0];
i=1;
number=0;
while(i<=size(a,2))
if(a(i)==0)
for j=i:size(a,2)
if(a(j)==1)
break;
end
end
number=number+1;
if(j==size(a,2))
i=j+1;
else
i=j;
end
else
i=i+1;
end
end抱歉,久等了,最后一个为0这种特殊情况我已经改好了,你再试试有没有问题追问还是不行,矩阵一长就直接走不动了
比如a=[0;1;1;0;0;1;0;1;0;1;0;0;0;1;1;0;1;0];
number=1追答不是,你把a改成行向量的形式再试试我的代码针对a是行向量的情况,我的size都是取第二个值
number=0;
while(i~=size(A,1))
if(A(i)==0)
number=number+1;
for j=i:size(A,1)
if(A(j)==1)
break;
end
end
i=j;
else
i=i+1;
end
end
我没有上机试一下,不过思路应该没错。追问我试了一下,将这段代码代入我的程序中,并拓展到5000行的向量的情况,结果系统说:i=1: 输入字符不是 MATLAB 语句或表达式中的有效字符。这是什么情况?追答哦哦,可能是我打了中文下的冒号,你改成英文的追问程序好像有点漏洞,a=[1;1;0;1;0;1;0;0;1;0];这个矩阵,number=3,但是实际应该为4,这是为什么,应该如何修改?追答a=[1 1 0 1 0 1 0 0 1 0];
i=1;
number=0;
while(i<=size(a,2))
if(a(i)==0)
for j=i:size(a,2)
if(a(j)==1)
break;
end
end
number=number+1;
if(j==size(a,2))
i=j+1;
else
i=j;
end
else
i=i+1;
end
end抱歉,久等了,最后一个为0这种特殊情况我已经改好了,你再试试有没有问题追问还是不行,矩阵一长就直接走不动了
比如a=[0;1;1;0;0;1;0;1;0;1;0;0;0;1;1;0;1;0];
number=1追答不是,你把a改成行向量的形式再试试我的代码针对a是行向量的情况,我的size都是取第二个值
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯