2014-04-04 254 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