我想将用户输入作为整数输入,例如(45697)
,并将前两位数存储在数组,向量或其他内容中,例如( 4 5 6 9 7 )
,以便我可以使用一些函数调用来检查前两个值(4 5)
并对它们执行计算。
问题:我不知道如何存储恢复前两个值。
是否有简单的函数调用?或者我是否必须先将输入存储为任何数组,然后提取前两个值,如果是,如何?
答案 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';
。