以十进制表示的整数分隔数字

时间:2013-11-02 15:22:49

标签: arrays matlab

我想将用户输入作为整数输入,例如(45697),并将前两位数存储在数组,向量或其他内容中,例如( 4 5 6 9 7 ),以便我可以使用一些函数调用来检查前两个值(4 5)并对它们执行计算。

问题:我不知道如何存储恢复前两个值。

是否有简单的函数调用?或者我是否必须先将输入存储为任何数组,然后提取前两个值,如果是,如何?

3 个答案:

答案 0 :(得分:1)

您可以轻松地使用转化为/来自字符串:

>> x = 45697; % or whatever positive value
>> str = num2str(x);
>> y = [str2num(str(1)) str2num(str(2))]

y =

     4     5

这假设数字x是正数(如果它是负数,则第一个字符不是数字)。这似乎是这种情况,因为根据你的评论,它代表了电阻。

答案 1 :(得分:0)

基于字符串的方法没有任何问题,但这是获取所有数字的数学解决方案:

>> x = 45697
x =

       45697

>> numDigits = floor(log10(x)+1)
numDigits =

     5

>> tens = 10.^(1:numDigits);
>> digitArray = fliplr(floor(mod(x,tens)./(tens/10)))
digitArray =

     4     5     6     9     7

这种方法的关键是使用mod一次切断一个高位数,将新的第一个数字向下移动到一个位置,最后截断到得到的整数值位置。

对于OP,所需的值为digitArray(1:2)

答案 2 :(得分:0)

由于您对个别数字感兴趣,因此您甚至无需调用str2num。一种方法就像在x_str = num2str(x);中一样,然后用'0'减去y = x_str(1:2)-'0';