2016-10-17 12 views
0

番号を入力します。数字の文字列を入力から配列/ベクトルに変換する方法は?

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

StudentNo = 54456842 

がNaNを得ることなく桁から平均や他の統計情報を見つけるために、個々の数字

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

にそれを作った後にこれを入れているので?

+0

生徒の番号は常に1桁ですか、それとも変わるのですか? – mpaskov

答えて

3

あなたは、次のアプローチ

str2num(num2str(StudentNo).') 

文字列にこの最初の変換StudentNoと数字にそれを破ることができ、その後、各文字がそれ自身の行にあるように、転置をとり、その後、我々はにstr2numを呼び出します各行を別々の番号に変換します。

別のオプションは、文字列に変換し、その後

num2str(StudentNo) - '0' 
+0

私は2番目の方法、きちんとした小さなトリックが好きです:D – GameOfThrows

0

入力は、単一の番号をキャプチャし、数値の桁に各文字を変換する'0'のASCII値を差し引くことであろう。学生数のそれぞれが、私はそれらを一つずつ取得示唆しているどのように多くの桁数を知ることは難しいだろう。

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に基づきEDIT

:あなたの場合コメント

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

これは、あなたの学生の麻痺のベクトルで別々のエントリとして検出されますers。

+0

Sueverのアプローチは可変桁数をきれいに処理するので、大きな問題ではないと思います。しかし、本当に一つ一つ入力したいのであれば、 '[1 2 3 4]'のように大括弧で囲んで入力すれば、whileループは避けられます。 –

+0

問題は '[1 2 12 45]'のように複数桁の学生番号で問題があり、 '[1 2 1 2 4 5]'に変換されます。私は 'input'が実際に' [] 'を正しく検出できるかどうかはわかりませんでした。 – mpaskov

0

スエバーのアプローチは、これを行うためのすてきな方法です。ただし、実際の数字を数字として必要とせず、別の数字だけが必要な場合は、input -callに数字を文字列として直接指定することができます。

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

ここで、's'は、入力が文字列であることを示します。この方法で、アポストロフィを持たずにStudentNoを入力できます。

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

これで、Sueverの答えに2つのアプローチのいずれかを使用して、これを別の数値に変換できます。別のオプションは、単にコール自体に'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 
関連する問題