matlab 的一个向量,形如[0 0 1 1 0 0 -1 0 0 0 1]之类的,如何将0元素转化为之前第一个非零元
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/25 11:21:49
matlab 的一个向量,形如[0 0 1 1 0 0 -1 0 0 0 1]之类的,如何将0元素转化为之前第一个非零元素一样?
1,最开始的0不管,直到出现第一个非零元素
2,也就是,转化为 [0 0 1 1 1 1 -1 -1 -1 -1 1]
用for 循环当然可以,但是数据量很大,会比较慢.有什么合适的向量函数吗?
1,最开始的0不管,直到出现第一个非零元素
2,也就是,转化为 [0 0 1 1 1 1 -1 -1 -1 -1 1]
用for 循环当然可以,但是数据量很大,会比较慢.有什么合适的向量函数吗?
![matlab 的一个向量,形如[0 0 1 1 0 0 -1 0 0 0 1]之类的,如何将0元素转化为之前第一个非零元](/uploads/image/z/17122316-68-6.jpg?t=matlab+%E7%9A%84%E4%B8%80%E4%B8%AA%E5%90%91%E9%87%8F%2C%E5%BD%A2%E5%A6%82%5B0+0+1+1+0+0+-1+0+0+0+1%5D%E4%B9%8B%E7%B1%BB%E7%9A%84%2C%E5%A6%82%E4%BD%95%E5%B0%860%E5%85%83%E7%B4%A0%E8%BD%AC%E5%8C%96%E4%B8%BA%E4%B9%8B%E5%89%8D%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%9D%9E%E9%9B%B6%E5%85%83)
如果占总数据比例不多,先用矢量化一次找到全部0,然后再循环替换之.
Z=find(S==0);
Snew=S;
nzero=length(Z)
for i=1:nzero
\x05Snew(Z(i))=Snew(Z(i)-1);
end
注意到你的数据可能首位0,你自己看着改吧.
说实在的,我想不出有什么更好的办法,感觉替换循环是避免不了的.
但用find一次找出全部0我试了下比直接循环找时间只有1/3到1/4.0值少的情况替换工作量不大,所以我这样处理还有意义.但如果0值多,相当于循环没省还要加额外的1/3时间做了次废操作提取0.
Z=find(S==0);
Snew=S;
nzero=length(Z)
for i=1:nzero
\x05Snew(Z(i))=Snew(Z(i)-1);
end
注意到你的数据可能首位0,你自己看着改吧.
说实在的,我想不出有什么更好的办法,感觉替换循环是避免不了的.
但用find一次找出全部0我试了下比直接循环找时间只有1/3到1/4.0值少的情况替换工作量不大,所以我这样处理还有意义.但如果0值多,相当于循环没省还要加额外的1/3时间做了次废操作提取0.
matlab中怎么查找一个向量中第一个非零元素的位置 如P=[0;1;2] 第一个非零元素的位置为2,在mbtlab中怎
如何用matlab找出矩阵每一列向量第一个0元素的位置以及最后一个0元素的位置,最好可以用循环来做,
matlab里如何判断一个向量里的元素全为0?
求教matlab中怎么把一个数转化成0-1表示的向量?
行最简形矩阵的问题.这个行最简形矩阵的定义是:非零行的第一个非零元为1且这些非零元所在的列的其他元素都是零那么为什么1
如何用MATLAB 产生一组只包含0和1这两个元素的向量?
matlab中如何找出向量的0元素位置
怎么用matlab做一个n维以0或1为元素的索引向量L
matlab一个向量比如[1,-5,2,0,3,-3]如何用最简单的语句分别实现判断大于0的元素的个数、等于0的元素的个
如何在matlab中定义如下矩阵,第一个元素是0,最后一个元素是 根号3,共100个元素的矩阵.谢谢大家
matlab程序怎么使向量的每一个元素都加上0到1之间的一个数的倍数,
线性代数中,向量空间里面只有一个非零分量的向量,如(1,0,0)(0,1,0)这样的向量叫什么向量?