我想將 n 個整數轉換為基數 b,并將每個數字寫為矩陣中的單個數字。
我得到基數 b 表示:
stringBaseB=dec2base(0:1:1000,b,10)
但不知道如何將每個字串拆分為單個字符
[[0,0,0,0];[0,0,0,1];[0,0,0,2];...]
我可以使用 array2table 來拆分單個字符:
tableBaseB=array2table(dec2base(stringBaseB,b,10))
但這不是數字矩陣。此外,在基數 b>10 中,我得到字母數字字符,我需要通過等價將其轉換為數字,例如
alphanumeric=["1","A","c","3"]
numericEquivalence=[1,1 i,-3,0]
有一種矢量化的方法嗎?
uj5u.com熱心網友回復:
對于某些 base b < 11,其中的字符陣列dec2base始終是個位數的數字字符,您可以簡單地執行
b = arrayfun( @str2double, stringBaseB );
對于某些通用基礎b,您可以在字符和值(您的numericEquivalence)之間制作映射
charMap = containers.Map( {'1','2','3'}, {1,2,3} );
然后你可以使用arrayfun(不是你要求的嚴格“矢量化”,但不清楚為什么這是一個要求)
stringBaseB=dec2base(0:1:1000,b,10);
b = arrayfun( @(x)charMap(x), stringBaseB );
這為您提供了一個數字輸出陣列,例如stringBaseB=dec2base(0:5,3,10)給出
stringBaseB =
6×10 char array
'0000000000'
'0000000001'
'0000000002'
'0000000010'
'0000000011'
'0000000012'
b =
6x10 double array
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318506.html
標籤:MATLAB
上一篇:為3D圖形添加完整的6個邊框
