格式化fprintf

时间:2012-08-08 13:53:33

标签: matlab printf

我有一些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文件中。正如你所知道的那样,这不是制表符分隔的,这是我的主要问题。我在使用格式字符串时遇到了一些麻烦。有谁知道如何重新格式化它以打印标签和换行符?

1 个答案:

答案 0 :(得分:1)

您正在ImgData创建一个字符串,然后将其作为输入传递给fprintf。这会将ImgData读入格式字符串的第一个%s,然后在末尾添加至少一个标签。

你应该做的是写下这样的东西:

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

假设imgName是字符串而imgNumber是整数。请注意,我将两个占位符(使用%-sign)和两个输入变量传递给fprintf。

例如,使用%6.2f打印浮点数,总共6个字符,包括逗号后面的2个字符,用于SNR

为了便于开发,您可以将第一个输入参数删除到fprintf,在这种情况下,它将打印到命令行。