2013-10-22 251 views
-1

在下面的節目,我想改變的Trial的價值,並希望運行一萬遍,每次試驗(迭代)計數N的出現在D如何獲得平均值

N  = 10; 
B  = eye(N); 
C  = zeros(1,N); 
p  = [0.1 0.2 0.4]; 
count = 1; 
Trial = 1; 

for t = 1:Trial 
    for q = 1:numel(p) 
     for ii=1:N  
      X = B; 
      X(ii, rand(size(p))<p(q)) = 0; 

      A = max(bsxfun(@minus, X,C), 0); 
      [~,idx] = max(A(sum(A,2)==1,:), [], 2); 
      if ~isempty(idx) 
       C(idx) = 1; 
      end 
     end 

     D(count,:) = sum(C); 
     count = count+1; 

    end 
end 

我知道怎麼算的N的出現在D。問題是,對於Trial = 2,陣列D變爲6x1,但我希望它在每次迭代中始終保持3x1。我怎麼做?

+0

請在代碼中修正縮進。 – Dan

+1

@Dan -corrected,請檢查。 –

+1

'D(count,:)= sum(C)'是不正確的,如果你想保持D一定的大小。你繼續增加計數,所以D將繼續增長。 –

回答

1

count價值似乎沒有任何用途,因爲您要D保持3-by-1。最簡單的解決方法是分配改爲D到:

D(q,:) = sum(C); 

因爲q迭代從1到numel(p)(即3),因此已經你想在櫃檯上。