如何将一串数字从输入转换为数组/向量?

时间:2016-10-17 13:15:28

标签: matlab

输入一个数字,例如

StudentNo = input('Please input your student number: ')

这样

StudentNo = 54456842

将其放入,然后将其分成单个数字

StudentNo = [5,4,4,5,6,8,4,2]

为了在没有获得NaN的情况下从数字中找到平均值或其他统计数据?

3 个答案:

答案 0 :(得分:3)

您可以使用以下方法将其分解为数字

str2num(num2str(StudentNo).')

首先将StudentNo转换为字符串,然后进行转置,使每个字符都在其自己的行上,然后我们调用str2num将每行转换为单独的数字。

另一种选择是转换为字符串,然后减去'0'的ASCII值,将每个字符转换为数字

num2str(StudentNo) - '0'

答案 1 :(得分:0)

输入捕获一个数字。很难知道每个学生数字的数字是多少,所以我建议逐个获取它们:

StudentNo = input('Please input your student number one by one (end with -1): ');
while StudentNo(end)~= -1
    StudentNo = [StudentNo, input('Please input the next student number (end with -1): ')];
end
% remove the -1
StudentNo = StudentNo(1:end-1);

修改

基于@StewieGriffin:如果您有多位数的学号,请注释:

StudentNo = input('Please input the next student number: ')];
[1 2 12 13]

这会将每个号码检测为学生号码矢量中的单独条目。

答案 2 :(得分:0)

Suever的方法是一种巧妙的方法。但是,如果您不需要实际数字作为数字,并且您只需要单独的数字,那么您可以直接指定您希望数字在input - 呼叫中作为字符串。

StudentNo = input('Please input student number: ', 's')

这里,'s'指定输入是字符串。这样您就可以输入StudentNo而不需要撇号。

StudentNo = input('Please input student number: ', 's')
Please input student number: 54456842
StudentNo =
54456842

现在,您可以在Suever的答案中使用这两种方法中的任何一种将其转换为单独的数字。另一种选择是在调用本身中通过'0'简单地进行减法:

StudentNo = input('Please input student number: ', 's')-'0'
Please input student number: 54456842
StudentNo =
     5     4     4     5     6     8     4     2

由于这有点难以阅读,您也可以将其作为匿名函数:

stid = @() input('Please input student number: ', 's')-'0';

并称之为:

stid()
Please input student number: 123456
ans =
     1     2     3     4     5     6