2016-05-11 8 views
0

リストから文字列変数を作成し、その名前の画像を保存するためにランダムな名前を作成します。コードのドラフトは以下の通りです:リストからランダムな文字列を使用した結果、Matlab sprintfの結果が不正になる

Names = [{'C'} {'CL'} {'SCL'} {'A'}]; 
nameroulette = ceil(rand(1)*4) 
filename = sprintf('DG_%d.png', Names{1,nameroulette}); 

しかし、私はfilenameをチェックし、私は私が入力したテキストは、文字列の一つが、私はそれが来る見当がつかない数ではない続いている何を得ますから。たとえば、nameroulette = 1の場合はfilenameDG_67.pngnameroulette = 4の場合はfilename = 'DG_65.png'となります。この番号はどこから来たのですが、どうすればこの問題を解決できますか?

+1

'sprintf'では、'%d'識別子は整数を表します。つまり、 '%d'が現れる整数を挿入します。私はあなたが得ているものは、文字列の文字の[ASCII値](http://www.asciitable.com/)であると考えています( '' A''は '' 65 ''' C' '' 67')数値の代わりに文字列を挿入するには '%s'を使います。チェックアウト[sprintfドキュメントのこのセクション(http://www.mathworks.com/help/matlab/ref/sprintf.html#inputarg_formatSpec) – Dan

答えて

3

あなたはちょうどあなたがランダムな整数を描画するためのランディのコマンドを見てしたいことがありちなみに

filename = sprintf('DG_%s.png', Names{1,nameroulette}); 

filename = sprintf('DG_%d.png', Names{1,nameroulette}); 

を変更する必要があります。

+0

ああ、それは私が思ったよりも簡単だった。ありがとうございました。また、私の 'nameroulette'変数を置き換えるための'randsample 'の提案もありました。 – Patapunfate

関連する問題