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

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里面能矢量化不?

 Réponse acceptée

yofih
yofih le 24 Nov 2022

0 votes

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

Plus de réponses (0)

Catégories

En savoir plus sur 循环及条件语句 dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!