首页 > 其他分享 >写一个MATLAB脚本删除一个.m文件的所有注释和空行,输出到一个新.m文件,文件名加上_modified后缀

写一个MATLAB脚本删除一个.m文件的所有注释和空行,输出到一个新.m文件,文件名加上_modified后缀

时间:2023-12-19 10:58:18浏览次数:37  
标签:文件 end fidInput modified quotes MATLAB file line fidOutput

请注意,这个脚本仅处理了最简单的情况,真正的Matlab代码可能包含更复杂的结构,如多行字符串、嵌套的字符串、转义字符等,处理这些情况可能需要更复杂的逻辑。

% Specify the input .m file name
inputFileName = 'originalScript.m';
outputFileName = [inputFileName(1:end-2) '_modified.m']; % Assumes .m extension

% Open the input file for reading
fidInput = fopen(inputFileName, 'r');
% Open the output file for writing
fidOutput = fopen(outputFileName, 'w');

% Check if the files are opened successfully
if fidInput == -1 || fidOutput == -1
    error('Error opening files.');
end

try
    % Read and process the file line by line
    while ~feof(fidInput)
        line = fgetl(fidInput); % Read a line from the input file
        if isempty(strtrim(line))
            % If the line is empty, skip it
            continue;
        else
            % Remove inline comments, considering the possibility of '%' in strings
            % Find all occurrences of single quote
            quotes = strfind(line, '''');
            % Split the quotes into opening and closing pairs
            openQuotes = quotes(1:2:end);
            closeQuotes = quotes(2:2:end);
            % Find the first '%' that is not between opening and closing quotes
            percentSigns = find(line == '%');
            for i = percentSigns
                if all(arrayfun(@(o, c) i < o || i > c, openQuotes, closeQuotes))
                    % This '%' is not inside a string, so it starts a comment
                    line = strtrim(line(1:i-1));
                    break; % Stop at the first comment
                end
            end
            % If the line is not empty after removing comments, write it to the output file
            if ~isempty(line)
                fprintf(fidOutput, '%s\n', line);
            end
        end
    end
catch ME
    % If an error occurs, display an error message
    fprintf('An error occurred: %s\n', ME.message);
end

% Close the files
fclose(fidInput);
fclose(fidOutput);

% Notify the user
fprintf('The file "%s" has been processed. All comments and empty lines were removed.\n', inputFileName);
fprintf('The modified file is saved as "%s".\n', outputFileName);

标签:文件,end,fidInput,modified,quotes,MATLAB,file,line,fidOutput
From: https://www.cnblogs.com/yhm138/p/17913148.html

相关文章

  • NX 2306 打开文件-无法加载从重用库插入的标准件(使用当前搜索选项找不到文件,部件已卸
    【写在每个笔记前面:个人学习记录,如有错误,烦请指正,不胜感激。】   (今日内容源于  NX网-老叶)重新打开装配体,加载异常,有如下警告首先明确如下两点:1、组件的文件路径未改动2、组件的文件名称未改动其次最后一点:☆:装配加载选项:修改为“按照保存的”,官方解释如下图右。......
  • Vue 大文件上传和断点续传的实现
    实现Vue大文件上传和断点续传需要掌握以下几个步骤:分片:将大文件分割成若干个小块,便于上传。一般采用Blob对象或ArrayBuffer来实现。上传:将分片文件上传到服务器。可以使用XMLHttpRequest、Fetch等工具进行上传。断点续传:如果上传失败或上传过程中断开连接,需要记录已上......
  • Matlab常用小技巧及部分快捷键
    Matlab常用小技巧一:1.m文件如果是函数,保存的文件名最好与函数名一致,这点都很清楚。不过容易疏忽的是,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成。原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误。例如,写个m文件......
  • Matlab-三维视图的自动旋转
    %figure%plot3(...);%xlabel('X轴');%ylabel('Y轴');%zlabel('Z轴');%title('标题');%gridon%打开网格%%fori=1:2:360%%view(a,b):a是角度,b是仰视角%view(i,20);%pause(0.06);%end例子,show_3D.m:clearall;closeall......
  • 专业、便捷的跨网文件摆渡产品,需要具备哪些功能特性?
    为了确保内部核心资产的安全性,很多企业和机构都会选择将网络进行隔离划分,比如内外网隔离,办公网、研发网隔离等。但网络隔离后,在日常工作中,仍存在用户需求把文件数据从内网到外网,从办公网到研发网终端的文件摆渡业务需求。很多企业都会使用一些传输工具和方式,进行文件摆渡传输。......
  • python调用matlab
    官网链接:https://ww2.mathworks.cn/help/matlab/matlab_external/call-user-script-and-function-from-python.html?lang=enhttps://ww2.mathworks.cn/help/matlab/matlab_external/install-the-matlab-engine-for-python.html安装用于 Python 的 MATLAB 引擎API要在Pyt......
  • 用MATLAB实现遗传算法程序
    用MATLAB实现遗传算法程序/B2F.m , 658用MATLAB实现遗传算法程序/changes.m , 959用MATLAB实现遗传算法程序/cross.m , 1155用MATLAB实现遗传算法程序/de2bi.m , 1048用MATLAB实现遗传算法程序/F2B.m , 540用MATLAB实现遗传算法程序/f553.m , 538用MATLAB实现遗传算法......
  • 基于深度学习网络的疲劳驾驶检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述3.1疲劳检测理论概述      疲劳检测的原理是根据人体疲劳状态下的特征检测,和正常状态下的特征检测做对比。在做疲劳检测之前,首先需要分析人体在疲劳状态下与正常状态下的特征有哪些不......
  • 多尺度retinex图像去雾算法matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a 3.算法理论概述      多尺度Retinex(MSR)图像去雾算法是一种基于Retinex理论的去雾算法。该算法通过在大、中、小三个尺度上计算图像的反射分量,并对其进行加权平均,从而消除雾气对图像的影响,提高图像的可视度......
  • 第二章:SpringMVC的配置文件(web.xml)及访问页面
    一、开发环境二、创建maven工程三、默认方式配置web.xml四、扩展方式配置web.xml五、创建控制器六、配置springMVC配置文件七、访问首页八、访问指定页面九、总结......