Saya mencoba mengubah bilangan bulat basis-10 k menjadi bilangan bulat basis-q, tetapi tidak dengan cara standar. Pertama, saya ingin hasil saya berupa vektor (atau string 'a,b,c,...' sehingga dapat diubah menjadi vektor, tetapi bukan 'abc...'). Yang terpenting, saya ingin setiap 'digit' berada di basis 10. Sebagai contoh, misalkan saya memiliki angka 23 (dalam basis-10) dan saya ingin mengubahnya menjadi basis-12. Ini akan menjadi 1B dalam notasi standar 1,...,9,A,B; namun, saya ingin hasilnya menjadi [1, 11]. Saya hanya tertarik pada angka k dengan 0 \le k \le n^q - 1, di mana n sudah diperbaiki terlebih dahulu.
Dengan kata lain, saya ingin mencari koefisien a(r) sedemikian rupa sehingga k = \sum_{r=0}^{n-1} a(r) q^r
di mana setiap a(r) berada di basis-10. (Perhatikan bahwa 0 \le a(r) \le q-1.)
Saya tahu saya bisa melakukan ini dengan for-loop -- saat ini sedang berjuang untuk mendapatkan rumus yang tepat! -- tapi saya ingin melakukannya dalam vektor, atau dengan fungsi internal yang cepat.
Namun, saya ingin menjadikan n menjadi besar, jadi saya lebih memilih cara yang lebih cepat daripada ini. (Tentu saja, saya dapat mengubahnya menjadi parfor-loop atau melakukannya di GPU; ini tidak praktis untuk situasi saya saat ini, jadi saya lebih memilih versi yang lebih langsung.)
Saya telah melihat hal-hal seperti dec2base, num2str, str2num, base2dec dan seterusnya, tetapi tidak berhasil. Setiap saran akan sangat dihargai.
Mengenai kecepatan dan ruang, praalokasi apa pun untuk bilangan bulat dalam rentang [0, q-1] atau serupa juga bagus.
Untuk lebih jelasnya, saya mencari algoritme yang berfungsi untuk q dan n apa pun, mengonversi bilangan apa pun dalam rentang [0,q^n - 1].
floor
,^
, dan/
sudah di-vektorisasi. Perulangan tidak diperlukan. - person excaza   schedule 18.11.2016