0

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

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

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

4

3 回答 3

1

您可以使用与字符串的转换轻松地做到这一点:

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

y =

     4     5

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

于 2013-11-02T15:27:11.227 回答
0

There is nothing wrong with a string-based approach, but here is a mathematical solution to getting all of the digits:

>> 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

The crux of this method is to use mod to chip off the high digits one at a time, shifting the new first digit down to the ones place, and finally truncating down to the get the integer value at that position.

In the case of the OP, the required values are digitArray(1:2).

于 2013-11-02T18:23:09.363 回答
0

由于您对单个数字感兴趣,因此您甚至不需要调用str2num. 一种方法就足够了,然后用x_str = num2str(x);减去。'0'y = x_str(1:2)-'0';

于 2013-11-03T23:55:11.123 回答