quindi ho una grande matrice (4091252x2) che sembra qualcosa di simile:Valori di mappatura di una matrice?
439105 1053224
439105 1696241
439105 580064
439105 1464748
1836139 1593258
1464748 439105
1464748 1053224
1464748 1696241
1464748 580064
580064 439105
In sostanza, la matrice rappresenta le chiamate effettuate da una persona all'altra, rappresentati da un PersonID (439105 chiamate 1053224). Quello che voglio fare è ridimensionare questa matrice in modo che il più piccolo personID = 1 e 2 per il successivo personID più basso, 3 per il successivo personID più basso dopo quello, ecc. Ad esempio se la matrice assomiglia a questa:
110 503
402 110
300 900
300 402
402 110
vorrei che mappato:
1 4
3 1
2 5
2 3
3 1
Il problema è che io sono un principiante di Matlab, e non ho idea di come fare questo. Ho esaminato reshape e sub2ind ma non penso davvero che sia quello che sto cercando. Come potrei realizzare questo in Matlab?
Qualsiasi aiuto sarebbe molto apprezzato, grazie!
Questa è una soluzione più elegante. Per il mio codice, tendo a fare il "trucco" di assegnare prima gli indici lineari, solo perché evita l'uso di rimodellare che a volte mi fa male alla testa. +1 – Tony
@David Grazie !! Tuttavia, cosa significa "~"? Inoltre, funzionerà anche se la stessa chiamata viene effettuata due volte? Ad esempio, 402 chiamando 110 due volte e quindi la matrice avrebbe due righe di [402 110]? Sono semplicemente confuso nel capire esattamente come funziona univoco – ocean800
@David Nevermind, l'ho appena testato da solo, e funziona! Grazie mille per l'aiuto !! – ocean800