[討論] 想要更改原定的迭代順序

看板MATLAB作者 (Octagram Boy)時間6年前 (2018/02/21 14:24), 6年前編輯推噓0(002)
留言2則, 1人參與, 6年前最新討論串1/1
大家好 小弟最近在寫程式碼遇到了一些問題 我的程式碼是做資源分配 假定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://www.ptt.cc/bbs/MATLAB/M.1519194282.A.3CD.html

02/21 15:02, 6年前 , 1F
還是用k=1:K 但是把CNR sort一下找出index
02/21 15:02, 1F

02/21 15:02, 6年前 , 2F
類似 [value, index] = sort(CNR, 'ascend')
02/21 15:02, 2F
感謝你!!我有想過先做 D = sum(CNR_k_n,2) E = sort(D) 的動作 這樣有排列好我的 CNR和 後面就有點不知道怎麼做了!! 謝謝你 我試試看你的方法!!! ※ 編輯: since2009yj5 (140.124.73.223), 02/21/2018 15:04:54
文章代碼(AID): #1QZH2gFD (MATLAB)
文章代碼(AID): #1QZH2gFD (MATLAB)