在Matlab中,如何在任意大的矩阵上执行fprintf命令

Vin*_*fer 3 matlab printf scanf matrix

我正在使用matlab分析大型数据集.我希望能够在这个矩阵上运行fprintf命令行,它有大约22000列.所以,到目前为止我的想法是:

j=22;
for i = 1:j;
    fname = fopen(strcat('chr', num2str(i), '.out'), 'r');
    A = fscanf(fname, '%d', [1000,inf]);
    FIDW = fopen(strcat('chrproc', num2str(i), '.out'), 'w+');
    fprintf(FIDW, '%d\t%d\t%d\t%d\t%d\t%d\t\n', B);
end
Run Code Online (Sandbox Code Playgroud)

这个大小的22个文件将通过1-4行转换为矩阵.然而,棘手的部分(至少对我来说)是fprintf要求您提供FORMAT.因为这些文件太大,所以没有真正的方法输入%d\t.

也许fgetl命令更好?但fgetl不打印到文件,更重要的是,fgetl返回一个字符串,这对我来说效果不好.真的,像fscanf命令之类的东西会很棒,除了读取而不是打印...

非常感谢您的帮助和建议.

mar*_*sei 5

您可以使用此matlab文档中描述的其中一个选项.可能性是:

  • save -ascii (提防科学记数法)
  • dlmwrite
  • fprintf正如您所提到的,将格式定义为fmt = repmat('%d\t',1,8);(8将替换为您的实际列数)

或者,您可以使用以下调用的文件交换功能saveascii.