请教下MATLAB一个问题啊 我想检测一行数据里面出现连续出现0的次数,
请教下MATLAB一个问题啊我想检测一行数据里面出现连续出现0的次数,例如数据1223000023430001233235220434353000124354123200...
请教下MATLAB一个问题啊
我想检测一行数据里面出现连续出现0的次数,例如数据
12 23 0 0 0 0 23 43 0 0 0 123 32 35 22 0 43 43 53 0 0 0 12 43 54 12 32 0 0 0 132
想用Matlab 检测出现了几次连续的0
出现单个的0不算连续的次数
我再请问下哈,如果现在是这样的数据
0 0 1 2 3 4 11 0 0 0 2 3 2 4 0 2 3 1 2 0 0 1 3 0 0
0 0 0 1 3 4 2 3 0 0 1 3 2 0 2 3 2 1 2 2 1 1 1 1 1 0
0 1 1 1 0 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0
0 0 0 1 2 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0
我只想把四周最边上的0保留,但中间的0,我想用1代替,要怎么处理呢?像上例,我要把第二、第三行中间的0有1代替,但二行,三行两端的0我保留。请问怎么处理呢? 展开
我想检测一行数据里面出现连续出现0的次数,例如数据
12 23 0 0 0 0 23 43 0 0 0 123 32 35 22 0 43 43 53 0 0 0 12 43 54 12 32 0 0 0 132
想用Matlab 检测出现了几次连续的0
出现单个的0不算连续的次数
我再请问下哈,如果现在是这样的数据
0 0 1 2 3 4 11 0 0 0 2 3 2 4 0 2 3 1 2 0 0 1 3 0 0
0 0 0 1 3 4 2 3 0 0 1 3 2 0 2 3 2 1 2 2 1 1 1 1 1 0
0 1 1 1 0 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0
0 0 0 1 2 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0
我只想把四周最边上的0保留,但中间的0,我想用1代替,要怎么处理呢?像上例,我要把第二、第三行中间的0有1代替,但二行,三行两端的0我保留。请问怎么处理呢? 展开
展开全部
先建立如下.m文件;
function n=cishu1(A);%检测连续0函数
m=length(A);
n=0;
j=1;
while j~=m
if(A(j)==0)
if (A(j+1)==0)
n=n+1;
end
while A(j)==0&&j~=m
j=j+1;
end
elseif(A(j)~=0)
j=j+1;
end
end
函数调用:
A=[12 23 0 0 0 0 23 43 0 0 0 123 32 35 22 0 43 43 53 0 0 0 12 43 54 12 32 0 0 0 132];
n=cishu1(A);
n=4
代码有不懂的 问我
第二问可以这样做
A=[你需要的矩阵];
[m,n]=size(A);
for i=2:m-1;
for j=2:n-1;
if A(i,j)==0;
A(i,j)=14;
end
end
end
function n=cishu1(A);%检测连续0函数
m=length(A);
n=0;
j=1;
while j~=m
if(A(j)==0)
if (A(j+1)==0)
n=n+1;
end
while A(j)==0&&j~=m
j=j+1;
end
elseif(A(j)~=0)
j=j+1;
end
end
函数调用:
A=[12 23 0 0 0 0 23 43 0 0 0 123 32 35 22 0 43 43 53 0 0 0 12 43 54 12 32 0 0 0 132];
n=cishu1(A);
n=4
代码有不懂的 问我
第二问可以这样做
A=[你需要的矩阵];
[m,n]=size(A);
for i=2:m-1;
for j=2:n-1;
if A(i,j)==0;
A(i,j)=14;
end
end
end
展开全部
非循环式,面向向量寻找【可以找任意连续的数字】
function findzero
dat = [12 23 0 0 0 0 23 43 0 0 0 123 32 35 22 0 43 43 53 0 0 0 12 43 54 12 32 0 0 0 132 0 ];
idx = find(dat == 0); %替换其中的0值,可以寻找任意的
df_idx = diff(idx);
idx = find(df_idx == 1);
df_idx = diff(idx);
df = length(find(df_idx > 1)) + 1
end
function findzero
dat = [12 23 0 0 0 0 23 43 0 0 0 123 32 35 22 0 43 43 53 0 0 0 12 43 54 12 32 0 0 0 132 0 ];
idx = find(dat == 0); %替换其中的0值,可以寻找任意的
df_idx = diff(idx);
idx = find(df_idx == 1);
df_idx = diff(idx);
df = length(find(df_idx > 1)) + 1
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
X0=[12 23 0 0 0 0 23 43 0 0 0 123 32 35 22 0 43 43 53 0 0 0 12 43 54 12 32 0 0 0 132];
target=0;
X0(X0~=target)=NaN; % if you don't assign the target, it will come out with the most succession frequency included in the array.
count=1;
fd=find(diff(X0)==0);
while ~isempty(fd)
count=count+1;
X0=diff(X0);
fd=find(X0==0);
diff(fd);
if ~ismember(1,diff(fd)) ;
break
end
end
disp(vector);
disp(count);
target=0;
X0(X0~=target)=NaN; % if you don't assign the target, it will come out with the most succession frequency included in the array.
count=1;
fd=find(diff(X0)==0);
while ~isempty(fd)
count=count+1;
X0=diff(X0);
fd=find(X0==0);
diff(fd);
if ~ismember(1,diff(fd)) ;
break
end
end
disp(vector);
disp(count);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也正在学习matlab.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把需要去掉的元素赋值为空,即[],即可。
A(1:2,:)=[]
A(1:2,:)=[]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询