【问题标题】:compare files within MATLAB [duplicate]比较 MATLAB 中的文件 [重复]
【发布时间】:2012-11-27 10:13:42
【问题描述】:

可能重复:
Compare files with MATLAB

我想使用 MATLAB 比较 2 个 txt 文件并在文件不相等时打印差异

我找到了 visdiff 这是一个图形工具,但我想知道是否有一些 MATLAB 函数进行这种比较?

如果文件之间存在差异,则仅打印 + 或 - 文件

谢谢

【问题讨论】:

  • 您能否更清楚地了解您说“给出差异”时的意思?我的第一直觉是使用diff unix 工具(或Windows 上的等效工具)的输出。您只需要向用户显示它还是什么?
  • S = visdiff(file1, file2) 实际上将 HTML 报告作为字符串返回。这样就够了吗?
  • 不,正如我所说,我想使用命令行而不是图形工具
  • 我认为这是XY problem 的情况。你想用那个输出做什么,为什么visdiff不够?
  • 你不是已经问过这个问题了吗? stackoverflow.com/questions/9315878/compare-files-with-matlab

标签: matlab diff


【解决方案1】:

在 linux/unix 中,可以使用 bash diff,在 matlab 中使用 system()(related article)

是这样的:

[content_differs, printout] = system('diff --side-by-side --left-column file1 file2');

content_differs 如果 file1 和 file2 具有相同的内容,则为 0,printout 是一个字符串。您可以逐行访问其数据(您可以在 matlab 中使用 split 或管道其他命令)。 ' 可以根据中间的字符来解析差异。正如我所观察到的,“(”出于某种原因表示没有区别。“”和“|”指的是添加和更改的行。

(你也有太多的 diff 选项来显示常见内容 -- check out this link for details

更新:

一个简单的文件解析脚本,显示所有常见部分。

file1 = 'your_file.m'
file2 = 'your_other_file.m';

[is_diff,output] = system(['diff --side-by-side --left-column ',file1,' ',file2]);

lines = regexp(output, '\n', 'split');

for i=1:(length(lines)-1)
    line = lines{i};
    if line(end) == '(' % common part
        disp( line(1:(end-1)) ); 
    end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 2018-03-14
    相关资源
    最近更新 更多