如何开辟一个空间以达到加速的效果。

indext=[];%indext 总是画波浪,提醒我每次循环都在改变大小,影响速度。
    ind=find(adjloop(1,:)==1);%找到adjloop这个向量的第一行等于1的坐标返回到ind。
    for j=1:length(ind)
        indj=find(adjloop(ind(j),:)==1);%indj也是一个向量  如:indj=[3  5  9];
        indext=[indext,indj];%正是由于这句话使得每次indext一直在变化,我想预开辟一个大小为100的空间但是不行。
    end
上面是一个小例子程序。问:如何给indext开辟一个空间让程序加速。
我试过的方法:indext=(1,100);%不行
indext(1,1:100)=[];%报错,因为=[] 其实代表删除单元格。
问,我怎么能加速!就这个小程序。我认为的入手点:
1,给indext开辟一定大小的空间 。%只是我认为,可能没有任何用。
2,for里面能矢量化不?

 Respuesta aceptada

yofih
yofih el 24 de Nov. de 2022

0 votos

那么,你的代码可以向量化实现为:
ind=find(adjloop(1,:)==1);
[indext,~] = ind2sub([size(adjloop,2),length(ind)],find(adjloop(ind,:).'==1))

Más respuestas (0)

Categorías

Más información sobre 循环及条件语句 en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 24 de Nov. de 2022

Respondida:

el 24 de Nov. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!