1

Matlabコードが少しあり、文字列をエクスポートして、そこからタブ配信のテキストファイルを作成しようとしています。fprintfはCでも同様に機能すると思います(そうでない場合はタグを編集してください)。私の問題はフォーマット文字列にあると思います。基本的に、タブと改行文字で区切ってほしい7つの文字列があります。「fid」はフルパスであることに注意してください。これをforループでループしているので、パスごとに行が追加され、ファイルがビルドされます。

ImgData = strcat(ImgData, fid, '\t', imgNumber, '\t', N_std,'\t',S,'\t',N,'\t',SNR,'\t',SNR_dB,'\n');
DataOut = fopen(strcat('Image_F', folderNumber, '_Data.txt'), 'w');
fprintf(DataOut,'%s\t %s\t %s\t %s\t %s\t %s\t %s\n',ImgData);

これがどのようにエクスポートされるかについて興味があるかもしれません。このフォーマットは次のようになります

fid\tI#\tN_std\tS\tN\tSNR\tSNR_dB\n

txtファイルで。お分かりのように、これは私の主要な問題であるタブ配信ではありません。フォーマット文字列に問題があります。タブと改行を印刷するように再フォーマットする方法を知っている人はいますか?

4

1 に答える 1

2

ImgDataに入力として渡す文字列を作成していますfprintfImgDataこれにより、フォーマット文字列の最初が読み取られ%s、最後に少なくとも 1 つのタブが追加されます。

代わりにすべきことは、次のように書くことです。

`fprintf(DataOut,'%s\t%i\n',imgName,imgNumber)`

imgNameそれは文字列とimgNumber整数であると仮定します。2 つのプレースホルダー (% 記号付き) と 2 つの入力変数を fprintf に渡すことに注意してください。

たとえば%6.2f、カンマの後の 2 文字を含めて、合計 6 文字の印刷浮動小数点数を使用します。SNR

開発を容易にするために、最初の入力引数を にドロップできますfprintf。この場合、コマンド ラインに出力されます。

于 2012-08-08T15:08:33.257 に答える