请参见下面的代码。
fileID = fopen('test.txt', 'w');
fprintf(fileID, '{%f, %f}, ', array1(1:end))
fclose(fileID)
我希望输出格式为:
{1,1}, {2,2}, {3,3}, {4,4},
{5,5}, {6,6}, {7,7}, {8,8},
...
但是,我却得到了:
{1,1}, {2,2}, {3,3}, {4,4}, {5,5}, {6,6}, {7,7}, {8,8}, ...
假设一个大数据集。
我知道我可以在fprintf字段中添加一个'\ n',但这只会在每对值之后给我换行。
如何在“迭代次数”为“ x”(在我的情况下,每4对值之后)的某个点插入新行?
答案 0 :(得分:3)
为此,您必须为整行创建格式:
nb_pairs = 4;
format = [strjoin(repmat({'{%f, %f},'}, 1, nb_pairs), ' ') '\n'];
% format = '{%f, %f}, {%f, %f}, {%f, %f}, {%f, %f},\n'
fprintf(fileID, format, array1);
答案 1 :(得分:2)
您可以使用x
作为参数,在运行时构建格式字符串:
x = 4;
fprintf(fileID, [repmat('{%f, %f}, ',1,x-1) '{%f, %f},\n'], array1(1:end))
命令窗口中的示例:
>> array1 = [1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8];
>> fileID = 1; % STDOUT
>> x = 4;
>> fprintf(fileID, [repmat('{%f, %f}, ',1,x-1) '{%f, %f},\n'], array1(1:end))
打印
{1.000000, 1.000000}, {2.000000, 2.000000}, {3.000000, 3.000000}, {4.000000, 4.000000},
{5.000000, 5.000000}, {6.000000, 6.000000}, {7.000000, 7.000000}, {8.000000, 8.000000},
如果您需要删除最后一个逗号,请添加
fprintf(fileID, '\b\b\n')
最后。因此,在上一个示例中,
>> fprintf(fileID, [repmat('{%f, %f}, ',1,x-1) '{%f, %f},\n'], array1(1:end)), fprintf(fileID, '\b\b\n')
给予
{1.000000, 1.000000}, {2.000000, 2.000000}, {3.000000, 3.000000}, {4.000000, 4.000000},
{5.000000, 5.000000}, {6.000000, 6.000000}, {7.000000, 7.000000}, {8.000000, 8.000000}