Matlab 将字符串中的字符逐个读取到数组中
在MATLAB中,将整数逐位读入数组的常用方法是什么 我正在尝试将一个四位整数,Matlab 将字符串中的字符逐个读取到数组中,matlab,Matlab,在MATLAB中,将整数逐位读入数组的常用方法是什么 我正在尝试将一个四位整数,1234拆分为一个数组[1 2 3 4],或者试试这个 result = str2num(num2str(1234)')' 这里有一个非常简单的方法来处理单个整数 s = num2str(1234) for t=length(s):-1:1 result(t) = str2num(s(t)); end 然而,最紧凑的方式是: '1234'-'0' 你可以用 下面是一个使用递归函数的优雅而高效的解决方案:
1234
拆分为一个数组[1 2 3 4]
,或者试试这个
result = str2num(num2str(1234)')'
这里有一个非常简单的方法来处理单个整数
s = num2str(1234)
for t=length(s):-1:1
result(t) = str2num(s(t));
end
然而,最紧凑的方式是:
'1234'-'0'
你可以用
下面是一个使用递归函数的优雅而高效的解决方案:
function d = int2dig(n)
if n >= 10
d = [int2dig(floor(n/10)),mod(n,10)];
else
d = n;
end
1234
是一个数值(如问题主体所示)还是一个字符串(char
,如标题所示)?@tmpearce-它实际上可以是,但现在我更感兴趣的是它是一个数值的情况。很抱歉标题混淆。@Dan这是因为字符代码的顺序与数字的顺序相同。因此'1'
的字符代码正好比'0'
的字符代码高1。尝试'0'+0
找出代码的实际内容。我明白了,这是一个很好的解决方案。为什么还要费心发布循环?@Dan,因为循环更容易推广。例如,使用此方法生成[12 23 34 41]
并不难。注意:对于数字矩阵,num2str(矩阵)-“0”
可以排序,但由于使用num2str
生成的字符矩阵中有空格,因此将返回一组-16
列,但遗憾的是,这不是一个值矩阵(与示例中的向量相反)。
function d = int2dig(n)
if n >= 10
d = [int2dig(floor(n/10)),mod(n,10)];
else
d = n;
end