在這裏,您可以簡單地遍歷error
的可能值,併爲其中的每一個存儲相應的D
。
N=30;
C = zeros(N , N);
plc = zeros(1, N) ;
rec1_Wopt = zeros(1, length(N)) ;
rec2_Wopt = zeros(1, length(N)) ;
ap1_Wopt = zeros(1, length(N));
ap2_Wopt = zeros(1, length(N));
C(1:N,1:N) = eye(N) ;
count = 1; %%%% ADJUSTED
for error=0.2:0.01:0.39; %%%% ADJUSTED
for Trial = 1 ;
R=C;
for i=1:N
if(rand < error)
R(i,:) = 0;
end
end
RecP=zeros(1,N) ;
for j = 1 : N
CpD = max(C(j,:)-RecP, 0) ;
if(sum(CpD) == 1)
plc(j) = plc(j) + 1;
end
RpD = max(R(j,:)-RecP, 0) ;
if(sum(RpD) == 1)
[MaxValue Idx] = max(RpD) ;
RecP(Idx) = 1 ;
end
end
rec2_Wopt(1) = rec2_Wopt(1) + sum(RecP) ;
if(sum(RecP) == N)
ap2_Wopt(1) = ap2_Wopt(1) + 1;
end
end
D(count,:) =rec2_Wopt/Trial ; %%%% ADJUSTED
count = count+1; %%%% ADJUSTED
end %%%% ADJUSTED
我標記了調整後的行。
如果與結果存儲到D
問題,請嘗試使用單元陣列,例如
D(count) ={rec2_Wopt/Trial}
感謝您的調整。但是當它計數時,先前的D值與下一個值相加。我想收集它,並且如果我想增加試用版本,如何存儲D的值?就像我想要得到Trial = 10的值一樣?任何建議? – user2663126
@ user2663126不知道是什麼問題,這是我想到的:'count = 1; D = []; for error = 2.2:0.01:2.39,D(count,:)= rand(3,1); count = count + 1; end'如果你現在想要提取第七個結果,例如這樣做:'D(7,:)' –
@ Dennis Jaheruddin你的代碼工作正常,但我的觀點是,對於p的第二個值,我得到兩個D的組合輸出,(如果前一個D的值是30,那麼對於第二個pi,獲得下一個D值作爲兩個D的總和,如30 + 29 = 59,並且對於第三個p再次總結三個D = 30 + 29 + 28。但是我想把所有的D值分開,而不是增加值。任何建議? – user2663126