作者since2009yj5 (Octagram Boy)
看板MATLAB
標題[討論] 想要更改原定的迭代順序
時間Wed Feb 21 14:24:40 2018
大家好
小弟最近在寫程式碼遇到了一些問題
我的程式碼是做資源分配
假定3個用戶以及10個子載波來分配
function N_sp = SP_Subcarrier_Allocation(K, N, B,P_total, CNR_k_n)
K = 3 ;
N = 10 ;
B = 1*10^6 ;
CNR_k_n = rand(K, N)
N_used1 = zeros(1, N) ;
K_used1 = zeros(1, N) ;
N_mf1 = zeros(K, N) ;
for k = 1:K
CNR_max = 0 ;
N_maxcnr = 0 ;
for n = 1:N
% n
if ((N_used1(1, n) == 0) & (CNR_k_n(k, n)) >= CNR_max)
CNR_max = CNR_k_n(k,
n)
% CNR_max
N_maxcnr = n ;
% N_maxcnr
end
end
N_used1(1, N_maxcnr) = 1
% N_used1
K_used1(1, N_maxcnr) = k
% K_used1
N_mf1(k, N_maxcnr) = 1
% N_mf1
end
end
由於CNR我是隨機產生的
但我必定先假設用戶順序才可以產生
而每個用戶產生出來的CNR和
我想要根據其 CNR和 由小到大去做迭代
但不知道在"for k = 1:K" 這一行要怎麼去做改變
我有嘗試用if寫過 但還是失敗
因此想請教一下版上的高手們
感謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.124.73.223
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1519194282.A.3CD.html
1F:→ LiamIssac: 還是用k=1:K 但是把CNR sort一下找出index 02/21 15:02
2F:→ LiamIssac: 類似 [value, index] = sort(CNR, 'ascend') 02/21 15:02
感謝你!!我有想過先做
D = sum(CNR_k_n,2) E = sort(D) 的動作 這樣有排列好我的 CNR和
後面就有點不知道怎麼做了!! 謝謝你 我試試看你的方法!!!
※ 編輯: since2009yj5 (140.124.73.223), 02/21/2018 15:04:54