打印Matlab脚本的全局结构

时间:2016-03-08 12:37:24

标签: matlab extract

我有一个大型的Matlab脚本,我想只提取包含forwhileifend等的行。应该包含缩进。例如:

%original
for i=1:2 %display text
    disp('I like you')
    if j==k % check if j=k
        disp('very much')
    end
end

%result
for i=1:2 %display text
    if j==k % check if j=k
    end
end

我想使用此概述来更好地概述代码的结构。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

有些事情:

f = fopen('myfile.m', 'rt');
a = textscan(f, '%s', 'Delimiter', '\n', 'Whitespace', '');
    fclose(f);

p = @(x) ~cellfun(@isempty, strfind(a{1},x));
b = a{1}(p('for') | p('while') | p('if') | p('end'));

请注意strfind在识别一行中的子字符串时非常简单(读作:dumb);如果您需要更精确的搜索(例如仅限整个单词),您可以使用regexp更安全。