1

行列をテキスト ファイルに書き込もうとしています。私の行列の最初の要素は、数桁の数字 (オブジェクト ID) です。最初の桁はゼロにすることができます (例: 023512、146498 など)。

ファイルを書き込むには、ループがあります。

objectID = [023512, 023534, 112512, 063512, 223512];
fSpec = ['%s', '\n'];
fID = fopen('file', 'w');
for k=1:5
    to_write = [num2str(objectID(k)) ',' 'l'];
    fprintf(fID, fSpec, to_write);
end
fclose(fID)

この例では、ファイルを取得します

23512,l 23534,l 112512,l 63512,l 223512,l

0が消えました。

fSpec ['%d' '%s' '%s' '\n] で %d を使用しようとしましたが、その場合、警告が表示されます: 範囲外または文字への変換中に整数以外の値が切り捨てられました. ゼロは引き続き削除され、すべてが同じ行に書き込まれます。

ゼロを切り捨てずに数値を文字列に変換する方法はありますか?

ありがとうございました

4

2 に答える 2

1

からゼロパディングを使用するのはどうですかfprintf(IDが常に6桁の数字であると仮定します)

objectID = [023512, 023534, 112512, 063512, 223512];
fSpec = '%06d,l\n'; % Note the %06d here!
fID = fopen('file', 'w');
for k=1:5
    to_write = objectID(k);
    fprintf(fID, fSpec, to_write);
end
fclose(fID)
于 2013-10-15T14:04:52.323 に答える