将字符串数组拆分为数字矩阵
Split array of strings into a matrix of numeric digits
我想将 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]
有矢量化的方法吗?
对于某些基数 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
我想将 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]
有矢量化的方法吗?
对于某些基数 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