如何借助AI进行模块封装DIY

01--模块封装需求

在建模过程中,经常会遇到重复造轮子,如果把重复的功能封装起来复用将会大大提高建模效率。尤其在诊断模块,很多都是需要满足触发条件然后经过一定的debounce time就进行故障的触发。

举例,倘若有如下需求,可能有几百个信号,每个信号需要进行最大最小值判断,如果在最大最小值范围内则判断该信号有效,如果不在则认为超限值,然后把所有的信号的超限位放在一个信号中进行汇总。任意位置位要能知道具体是哪个信号有问题。

02--功能实现

设计如下参数:

max:the max value from input signal. 输入信号的最大值

min:the min value from input signal. 输入信号的最小值

value_dt:the max and min value data type.上述最大值最小值的数据类型

output_dt:the output signal date type.输出信号的数据类型

按照需求建模,这个比较简单,实现起来比较快

在data conversion模块那里,写上变量output_dt

最大值最小值属性内填变量value_dt

首先进行子系统封装:

封装完成后右键去mask编辑

添加2个Edit

按如下填写:一个是变量说明,一个是变量

再添加两个Data TypeStr

也同样需要填写变量说明及变量名,另外还需要去Type options内去设置数据类型的种类

把如下数据类型勾选上,并且去用户自定义数据类型内把枚举类型也选上

在模块说明那里填写说明信息:

03--模块图标实现

图标的实现可以借助AI了,其实如果封装模块的算法比较复杂的话,也可以借助AI进行提示。

首先模块图标可以在画图软件上面画一个示意图,我画的如下:

把图片喂给豆包,让豆包生成一个用m脚本导入到MATLAB内运行就能生成的图片。

以下是豆包生成的过程。

第一次运行后,差太远

让他调整:

仍然有问题,继续调整:

最终进行4次,生成了和我的画图中几乎一样的代码:

复制代码
%% 最终完美版:文字完全在框内的 Out of range 示意图
clear; clc; close all;

% --- 1. 画布和坐标配置 ---
figure('Color','w','Position',[100 100 900 350]);

min_x = 3;    % Min 位置
max_x = 6;    % Max 位置(往右挪一点,给文字更多空间)
y_low = 0;
y_high = 1;

hold on; axis off; axis equal;

% --- 2. 绘制线条(和原图1:1)---
% 下方完整主轴线
plot([0, 9], [y_low, y_low], 'k', 'LineWidth', 4);

% 左侧 Out of range 框:上横线 + 右侧竖线
plot([0, min_x], [y_high, y_high], 'k', 'LineWidth', 4);
plot([min_x, min_x], [y_low, y_high], 'k', 'LineWidth', 4);

% 右侧 Out of range 框:上横线 + 左侧竖线
plot([max_x, 9], [y_high, y_high], 'k', 'LineWidth', 4);
plot([max_x, max_x], [y_low, y_high], 'k', 'LineWidth', 4);

% --- 3. 文字标注(缩小字体,调整位置,保证在框内)---
% 左侧 Out of range
text(1.5, 0.5, 'Out of range', ...
    'FontSize', 26, ...       % 缩小字体
    'HorizontalAlignment','center', ...
    'VerticalAlignment','middle', ...
    'Color', [0.8 0.3 0]);

% 右侧 Out of range
text(7.5, 0.5, 'Out of range', ...
    'FontSize', 26, ...       % 缩小字体
    'HorizontalAlignment','center', ...
    'VerticalAlignment','middle', ...
    'Color', [0.8 0.3 0]);

% Min 和 Max 标签(位置和竖线对齐)
text(min_x, -0.35, 'Min', ...
    'FontSize', 36, ...
    'HorizontalAlignment','center', ...
    'Color', 'k');

text(max_x, -0.35, 'Max', ...
    'FontSize', 36, ...
    'HorizontalAlignment','center', ...
    'Color', 'k');

% --- 4. 调整坐标范围,防止内容被截断 ---
xlim([-0.5 9.5]);
ylim([-0.8 1.8]);

hold off;

% 2. 保存成图片(保存在当前工作目录)
saveas(gcf, 'OutOfRange_Icon.png');

MATLAB运行后:

在模块的封装的图标界面上,写如下代码即可把图标代入到模块中

04--封装模块最终效果:

双击对话框:

05--测试验证

假若有如下5个测试用例:

A输入值为34,最小值为0,最大值为8,封装模块设置如下:

B输入值为state.open,最小值为state.no_response,最大值为state.closed,封装模块设置如下:

C输入值为1,最小值为0,最大值为2,封装模块设置如下:

D输入值为2100,最小值为0,最大值为2000,封装模块设置如下:

E输入值为255,最小值为0,最大值为255,封装模块设置如下:

然后通过移位模块把所有信号放进一个信号号,并设置观测量,总体模型搭建如下

理论上只有A和D会满足条件而进行置位,上图已经是仿真之后的结果,正好是bit0和bit3置位,满足需求。

相关推荐
ZGIAI2 分钟前
客服知识库更新后,怎么批量验收
人工智能·架构
Asize38 分钟前
AI 协作开发新范式:我用 SDD 做了个排版 npm 包
前端·人工智能
IT_陈寒3 小时前
用了Proxy才发现以前的JavaScript白写了
前端·人工智能·后端
甲维斯3 小时前
Claude Opus5手搓“NewAPI Plus”首轮成果!
人工智能
程序猿DD3 小时前
分享两个我每天都在用的 Skill,拖进豆包就能跑,限时领 30 天会员
人工智能
阿里云大数据AI技术4 小时前
Agentic Search 2.0:从单轮对话迈向企业级 AI 搜索自动驾驶Agent
人工智能·elasticsearch·agent
东风破_4 小时前
从 messages 数组到 Memory:大模型到底是怎么“记住”上一轮对话的?
人工智能
AEI4 小时前
四年间大模型的演进历程
人工智能·面试·程序员
狂师4 小时前
阿里开源:skill-up,一款Agent Skill 评测工具!
人工智能·开源·agent
武子康4 小时前
同一套 Agent Runtime,为什么 Web、Headless 和 Python SDK 仍然不是同一个产品
人工智能·llm·agent