将1添加到每个非零元素,matlab

将1添加到每个非零元素,matlab,matlab,vector,Matlab,Vector,我存储的vectorRVE,我只想为每个非零元素添加一个。因此,每个非零元素都是单独存在的,矩阵a1中不是0的每个数字都将被添加到其中 例如: 代码: n=100; primlist=2;%启动素数列表 对于numba=1:n; 如果mod(2+numba,primlist)~=0 primlist=[primlist;2+numba];%生成素数列表 结束 结束 对于numbas=2:n prims=零(大小(primlist)); pprims=零(大小(primlist)); pow=pr

我存储的vector
RVE
,我只想为每个非零元素添加一个。因此,每个非零元素都是单独存在的,矩阵a
1
中不是
0
的每个数字都将被添加到其中

例如:

代码:

n=100;
primlist=2;%启动素数列表
对于numba=1:n;
如果mod(2+numba,primlist)~=0
primlist=[primlist;2+numba];%生成素数列表
结束
结束
对于numbas=2:n
prims=零(大小(primlist));
pprims=零(大小(primlist));
pow=prims;
对于k=1:10
对于i=1:长度(primlist)%标识primlist中的每个素数
如果mod(numbas,primlist(i)。^k)==0
prims(i)=primlist(i);%prims的所有幂的总和,使得prims将numbas除掉
功率(i)=k;%收集素数的指数
结束

如果primlist(i)逻辑索引方法:

RVE=[5 3 1 0 0 0 0 0];
RVE(RVE~=0)=RVE(RVE~=0)+1;
结果:

RVE =

     6     4     2     0     0     0     0     0

逻辑索引方法:

RVE=[5 3 1 0 0 0 0 0];
RVE(RVE~=0)=RVE(RVE~=0)+1;
结果:

RVE =

     6     4     2     0     0     0     0     0

您可以这样做,例如:

x = [1 2 3 0 0 0 0 0];
y = x+(x~=0);

您可以这样做,例如:

x = [1 2 3 0 0 0 0 0];
y = x+(x~=0);
RVE(RVE~=0)
选择每个非零元素。添加1个用户

RVE(RVE~=0)=RVE(RVE~=0)+1
RVE(RVE~=0)
选择每个非零元素。添加1个用户

RVE(RVE~=0)=RVE(RVE~=0)+1
上面的条件部分将返回1(元素不是0)和0(元素是0)的矩阵/向量。将此结果添加回原始矩阵


上面的条件部分将返回1(元素不是0)和0(元素是0)的矩阵/向量。将此结果添加回原始矩阵。

@tmpearce:Edit在发布答案/问题后5分钟内未显示()@tmpearce:Edit在发布答案/问题后5分钟内未显示()我的答案的优雅替代方案。适当地突出显示你的代码,我会给你我的投票。我的答案的另一个优雅的选择。适当地突出显示您的代码,我会给您投票。