2016-06-19 4 views
-1

私は2つのベクトルを持って、一方が他方のベクトルがリストである。このfprintfのエラー(セル用に定義されていない?)

のような長さ147202x1の言葉
hello 
there 
some_word 
... 

の辞書です同じ長さのこのような数字の番号

1.0 
-1.0 
1.0 
... 

これを乱数でサンプルしたいと思います。私は、これは私がファイルにこれらの新しいベクトルを印刷する長さ1437の1および長さ(dictS_train)の間の数のサンプルがあると思い長さ1437

x_1 = randsample(1:length(dictS_train), 1437, true); 

のこの新しいベクトルを作ります。だから私は

filename = 'name_of_the_file.txt'; 
filename = fopen(filename,'w'); 
fprintf(filename,'%s %f \n', dictS_train(x_1), polS_train(x_1)); 
fclose(filename); 

を試みたが、問題は、それが

関数fprintfのは、「セル」の入力用に定義されていないこのエラーをポップということです。

私は間違っていますか?たぶん私は各番号を1つずつ印刷する必要がありますか?

念のため、私は、各行に1つのdictS_trainの要素とpolS_train

+2

何が間違ってやっているがために非常に明確な綴られますあなたはMATLABによって:あなたは 'fprintf'をセル上で使うことはできません。行列(あなたの場合はうまくいくでしょう)を行列にするか、それをループして、各セル要素を一時的なchar-matrixに抽出します。 – Adriaan

+0

そして私はどのように2番目ですか?私は他の新しいベクトルに 'x = dictS_train(x_1);' 'y = polS_train(x_1);' '' k = 1:length(x_1) ' ' fprintf(filename、 '%s% 'end' 同じエラーが発生する –

+0

セルを通常の行列(丸括弧'() ')として呼び出そうとしています。あなたはこれにしてはいけません。これは非常に基本的なものなので、[MATLABのデータ型の言語の基礎](http://mathworks.com/help/matlab/data-types_data-types.html)を読むのがよいでしょう。 – Adriaan

答えて

0

の他さて、私は、各データ型の混乱を作っていたを印刷したいです。

誰かが同じ問題を抱えている場合、簡単な解決策は、データがclass(your_data)のセルであるかどうかを確認することです。もしそれがセルだとすれば、cell2mat(your_data)で単純な配列(ベクトル)に変更できます。しかし、次元が配列であるかどうか注意してください。例えば

、鉱山は(nは、1)ので、私はこのような(1、n)は「'」でそれを変更する必要がありました。cell2mat(your_data')

+2

'cell2mat'は、あなたの細胞が一様なサイズの一様なデータを含んでいる場合にのみ動作します。 – excaza

関連する問題