MWORKS Syslab 2026a 版本使用感受


本文章就 MWORKS Syslab 2026a 的 M 语言编程环境的更新发表看法。对于科研过程中需要研究 M 语言项目的学生来说,MWORKS Syslab 不得不说解决了我的燃眉之急,而在这一年的使用过程中,它的 M 语言编程环境不断更新优化,今年的新版本又上升了新的高度。我将从两个方面我的使用感受。


M 函数

在这一年中 M 函数的更新速度令人惊讶,从我开始使用 Syslab 时 M 函数才有一千多,而在这个版本中 M 函数已经达到 2033 个。
在这里插入图片描述

最重要的是,在之前使用的一年多的版本中没有 table 函数,我的整个项目的运行不得不终止,虽然在询问同元的老师后得到了可能使用 struct 暂时手动替代的答案,但无疑工作量是巨大的。在整个项目中必须使用 table 的类函数、table 与 array 的互相转化、table 数据写入 Excel 文件等等。在这个版本中终于的到了解决!!由于项目代码的保密性,我将简单展示我在 Syslab 中使用 table 的测试代码。在解决了 table 函数后我的项目已经可以成功运行了(感动。

  1. 创建 Table

    %% ==================== 1. 创建 Table ====================
    % 1.1 从数组创建
    studentID = [101; 102; 103; 104];  % 学生ID
    name = ["Zhang San"; "Li Si"; "Wang Wu"; "Zhao Liu"];  % 姓名
    score_math = [85; 92; 78; 90];     % 数学成绩
    score_english = [88; 85; 80; 95];  % 英语成绩
    is_pass = [true; true; false; true]; % 是否及格
    
    
    disp('=== 初始创建的Table ===');
    disp(student_table);
    

    在这里插入图片描述

  2. 访问 Table 数据

    	%% ==================== 2. 访问 Table 数据 ====================
    	% 2.1 按列名访
    	math_scores = student_table.Math;  % 获取数学成绩列(返回数值数组)
    	disp(' === 数学成绩列 ===');
    	disp(math_scores);
    	
    	% 2.2 按索引访问
    	second_student = student_table(2, :);  % 获取第2行所有列
    	disp(' === 第二个学生的所有信息 ===');
    	disp(second_student);
    	
    	% 2.3 按行名访问
    	stu3_info = student_table('Stu3', :);  % 获取行名为Stu3的行
    	disp(' === 第三个学生的所有信息 ===');
    	disp(stu3_info);
    	
    	% 2.4 同时按行和列筛选
    	english_102 = student_table(student_table.ID == 102, 'English');
    	disp(' === ID=102的学生的英语成绩 ===');
    	disp(english_102);
    

    在这里插入图片描述

  3. 修改 Table 数据

    %% ==================== 3. 修改 Table 数据 ====================
    % 添加新列:总分(数学+英语)
    student_table.Total = student_table.Math + student_table.English;
    
    % 删除列:删除IsPass列
    student_table.IsPass = [];
    
    disp(' === 修改后的Table(加总分+删及格列) ===');
    disp(student_table);
    

    在这里插入图片描述

  4. 筛选 Table 数据

    %% ==================== 4. 筛选 Table 数据 ====================
    % 筛选总分≥170的学生
    high_score_stu = student_table(student_table.Total >= 170, :);
    disp(' === 总分≥170的学生 ===');
    disp(high_score_stu);
    
    % 筛选姓名包含"Li"的学生(字符串匹配)
    li_stu = student_table(contains(student_table.Name, "Li"), :);
    disp(' === 姓名包含"Li"的学生 ===');
    disp(li_stu);
    

    在这里插入图片描述

  5. 合并 Table 数据

    %% ==================== 5. 合并 Table 数据 ====================
    % 创建第二个table(班级信息)
    class_info = table(["Class1"; "Class1"; "Class2"; "Class1"], ...
        'VariableNames', {'Class'}, ...
        'RowNames', {'Stu1', 'Stu2', 'Stu3', 'Stu4'});
    
    % 横向合并(按行名匹配)
    student_table_complete = [student_table, class_info];
    disp(' === 合并班级信息后的完整Table ===');
    disp(student_table_complete);
    

    在这里插入图片描述

  6. 导出为 excel 表格

    writetable(student_table_complete,"mytable.xlsx")
    

    在这里插入图片描述

M 语言 IDE 代码编辑

M 语言 IDE 代码编辑新版本中新增了延长我寿命的功能——代码格式化与代码定位。

  1. 代码格式化
    那些从其他地方复制过来的 m 代码,终于能够一键从这样:在这里插入图片描述
    变成这样:
    在这里插入图片描述

  2. 代码定位
    在我的 M 项目中,最常见的代码无非就是 for 循环以及 if 判断,这样的一个代码段有时候可以长达十多行。而 Syslab 新版本终于支持从 end 定位到对应的 forif 语句。
    例如这样一个代码段:
    在这里插入图片描述当我想找到某个 end 所对应的 forif 时,只需要在 end 上右击,再选择转到定义即可:
    在这里插入图片描述
    随即,光标就会指向对应的 forend 的定义:
    在这里插入图片描述

总之,MWORKS Syslab 2026a 版本的更新对我的项目推进有着实质性的帮助,能感觉到它越来越好用,越来越强。在这一年以来,我向同元的老师反映过 M 函数问题,交流过 Syslab M 语言计算环境的前景,提出的问题在不断被解决,我也真心希望 Syslab 这款国产软件不仅走向全国,也走向世界。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值