2013-10-09 34 views
0

在我的程序中,我已經考慮了一個矩陣並獲得了一個矩陣的輸出。但我想獲得多個矩陣的輸出。例如: 我的程序從哪裏得到我的輸出爲D以下。在下面的程序中,我只有一個參數「error」的值。但是我想爲這個參數獲得20個值。這裏在這種情況下,錯誤= 0.2,但我想得到D的錯誤值= [.21 .22 .23 .24 .25 .26 .27 ...最多20個值]想要獲得超過一個矩陣的價值

我知道這是對於Matlab專家來說不是一個大問題。你能提出這個問題嗎?

回答

1

在這裏,您可以簡單地遍歷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} 
+0

感謝您的調整。但是當它計數時,先前的D值與下一個值相加。我想收集它,並且如果我想增加試用版本,如何存儲D的值?就像我想要得到Trial = 10的值一樣?任何建議? – user2663126

+0

@ user2663126不知道是什麼問題,這是我想到的:'count = 1; D = []; for error = 2.2:0.01:2.39,D(count,:)= rand(3,1); count = count + 1; end'如果你現在想要提取第七個結果,例如這樣做:'D(7,:)' –

+0

@ Dennis Jaheruddin你的代碼工作正常,但我的觀點是,對於p的第二個值,我得到兩個D的組合輸出,(如果前一個D的值是30,那麼對於第二個pi,獲得下一個D值作爲兩個D的總和,如30 + 29 = 59,並且對於第三個p再次總結三個D = 30 + 29 + 28。但是我想把所有的D值分開,而不是增加值。任何建議? – user2663126