0

2つのtxtファイルを比較して、ファイルが等しいことを確認しようとしています。そうでない場合は、出力を取得して差を付けます(差分行xがあると言います)

私は次のようにしようとしています:

fid1 = fopen(file_1, 'r');
fid2 = fopen(file_2, 'r');
lines1 = textscan(fid1,'%s','delimiter','\n');
lines2 = textscan(fid2,'%s','delimiter','\n');
lines1 = lines1{1};
lines2 = lines2{1};
fclose(fid1);
fclose(fid2);
tf = isequal(lines1,lines2); % this gives 0 or 1 

値が0(ファイルが異なる)の場合、差分をローカライズして、ファイルが異なる場所に行を表示したり、差分の内容を印刷したりしたいと思います。

4

1 に答える 1

0

基本的に、cell 配列全体ではなく、2 つの cell 配列の各要素を比較する必要があります。ほとんどの言語ではループを使用してこれを行うことができますが、もちろん、MATLAB にはループを回避する方法が多数あります。ここでは、次のcellfunとおりです。

cellfun(@isequal,lines1,lines2)

(2 つの cell 配列のサイズが異なる場合、長い方を短くする必要があるという部分は省略しました。)次に、find任意のベクトルで特定の値の最初の (またはすべての) 出現を見つけるのに役立ちます。 .

于 2012-11-19T08:40:15.333 に答える