2014-04-04 164 views
0

我需要在我的程序中存储矢量PVX,我已经完成了预分配技巧,但它不起作用。我不断收到最后一个条目。为什么很难存储的东西。我想为每个numbas使用矢量PVX = [numbas,POW],所以我可以参考它们。存储矢量,Matlab

n=100; 
primlist=2; 


for numba=1:n; 
    if mod(2+numba,primlist)~=0 
    primlist=[primlist;2+numba]; 
    end 
end 



PVX=zeros(size(1,26)); %Pre-allocating vector 

for numbas=2:n 


prims=zeros(size(primlist)); 
    pow=prims; 
    for k=1:10 
    for i=1:length(primlist) 
     if mod(numbas,primlist(i).^k)==0 
      prims(i)=primlist(i); % sum of all the powers of prims, such that prims divide numbas 
      pow(i)=k; 

      POW=pow'; 

      PVX=[numbas,POW]; 

     end 

    end 

    end 


end 

PVX 

回答

0

每次通过i和k循环时,您都覆盖PVX。如果你想给我环内存储PVX,您可以使用

PVX(i,:) = [numbas, POW]; 

预分配并没有真正的工作,因为你不知道PVX的大小提前(至少在你设定的方式代码)。

+0

是PVX的大小是26,numbas加上所有的POWS(25)将是26 – Crisp