matlab 的一个向量,形如[0 0 1 1 0 0 -1 0 0 0 1]之类的,如何将0元素转化为之前第一个非零元素一样?

 我来答
巴霞姝雍涤
2020-01-14 · TA获得超过3万个赞
知道大有可为答主
回答量:1万
采纳率:26%
帮助的人:765万
展开全部
如果占总数据比例不多,先用矢量化一次找到全部0,然后再循环替换之。
Z=find(S==0);
Snew=S;
nzero=length(Z)
for
i=1:nzero
Snew(Z(i))=Snew(Z(i)-1);
end
=========================================
注意到你的数据可能首位0,你自己看着改吧。
说实在的,我想不出有什么更好的办法,感觉替换循环是避免不了的。
但用find一次找出全部0我试了下比直接循环找时间只有1/3到1/4。0值少的情况替换工作量不大,所以我这样处理还有意义。但如果0值多,相当于循环没省还要加额外的1/3时间做了次废操作提取0.
善夏侯兰qu
2020-04-20 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:625万
展开全部
clear
clc
a=30;%需要查找0的长度,可改变
a=zeros(1,a);
b(1:50)=1;b(51:90)=3;b(91:180)=0;%随便建立一个b进行测试
i=1;
while
isequal(a,b(i:i+29))~=1
i=i+1;
end
disp(i)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式