使用Matlab将特定行从一个txt文件写入另一个文件

时间:2014-06-26 16:30:36

标签: matlab for-loop text

给定for循环,我想使用Matlab将特定行从一个文本文件写入另一个文本文件。我见过的解决方案提到将文本文件放入数组/矩阵并逐行写入并逐行读取(而我想读取特定的行)但是他们重新格式化数据(例如,将''添加到字符串和[] to ints)。以下是对代码的模糊概念:textFile& otherTextFile =我要写入的文件,data =来自txt文件特定行的所有内容,i =文本文件的行。

for i = 1:100
    if i < 15
        fprintf(textFile, data);
    else
        fprintf(otherTextFile, data);
    end
end

提前非常感谢!

编辑:我不太清楚,但我的实际代码需要从几个不同的特定部分编写,例如。第1-15行,第60-70行复制到一个文件,其他行复制到另一个文件。使用下面接受的答案,您只需使用该确切的实现并继续将fprintf语句放在if / elseif / else语句之间。

1 个答案:

答案 0 :(得分:0)

文本文件是一个字节流,这意味着文本文件中没有存储明确的信息说&#34;行号 n 开始< / strong>位置&#34;。因此,一旦文件打开,第一个读取行是第一个,第二个读取行是第二个,依此类推。

一些代码来说明:

% Some named numbers
N_LINES  = 100
N_SWITCH = 15

% Open files
fin   = fopen('inputfile.txt', 'r');
fout1 = fopen('outfile1.txt', 'w');
fout2 = fopen('outfile2.txt', 'w');

% Split lines between the 2 files
for i = 1:N_LINES
        % Read input
        data = fgets(fin);
        if feof(fin)
                break;
        end;

        % Write output
        if i < N_SWITCH
                fprintf(fout1, '%s', data);
        else
                fprintf(fout2, '%s', data);
        end;
end;

% Close files
fclose(fin);
fclose(fout1);
fclose(fout2);