当前位置: 首页 > news >正文

Simulink壁咚(一)——What and How

目录

一、前言

二、Simulink 知多少

三、滤波算法

四、Model Verification

五、Model Coverage

六、Simulink测试实例

七、Simulink Test

八、Test Manager

九、Test Harness 

 十、 学习


一、前言

Simulink从2017b以后更加工程化和实用化,基于MBD的功能日趋完善,从需求定义、模型链接,测试用例,模型测试,代码生成等等,那对于初识它的朋友可能需要先了解一些前期知识,然后在项目和工程中实战积攒经验,变成一个老手。

二、Simulink 知多少

派生对象包括Simulink Signal ,Simulink Parameter, Simulink Bus, Simulink Alias, Simulink Variant, 创建方式包括在脚本以构造函数的方法创建,在模型浏览器创建。

Simulink Parameter是Simulink 参数对象 , 在工程中常以配置参数的方式设置; Simulink Lookup Table是与lookup table模块相对应的数据类型,插值点和插值点对应数据的集合。Breakpoint是插值点的集合。Simulink Signal是信号,与信号线相关联。Numeric/Alias Type是其他数据类型的别名。Bus是总线,类似于结构体。Simulink.Variant有两种状态满足条件激活,未激活是0激活是1。

 如何对Bus中的各元素进行初始化,使用Bus Assignment 。

如何保存工作空间数据?点击数据工作空间,然后Ctrl+S即可。可以保存.mat或者m文件。

数据字典即数据源,模型运行时不需要重新加载。使模型和数据字典关联,模型运行时自动从数据字典里搜索数据。数据字典,可回溯,因为数据字典不仅记录数据,还记录对数据的修改行为和版本。如何创建数据字典?

 手动创建数据字典?


Simulink.data.dictionary.create('DataDictionary\dic2.sldd');obj=Simulink.data.dictionary.open('DataDictionary\dic2.sldd');importFromBaseWorkspace(obj,'varList',{'Sig','Var'});listEntry(obj)saveChanges(obj)close(obj)

 Bus针对结构体,Mux可以合成向量,Mux要求多个元素具有相同的数据类型。

Selector是Signal Routine里面的模块,主要用于提取向量或者元素。

Weighted Sample Time Math与采样时间相关的模块

Goto模块用于连接两个断开连线的端口,Goto设置为Global表示全局可见(其他子系统都可见),设置为Scoped表示定义范围内可见,此时要结合Goto Tag Visibility模块一起使用,表示该层级及该层级以下的子系统均可以识别。

Multiport Switch 可以实现switch case功能。

Signal Specification 模块是虚拟模块,允许您指定连接到其输入和输出端口上的信号的属性,如果指定的属性与其端口上连接的模块所指定的属性冲突,Simulink® 软件将在编译模型时显示错误消息,在模型的仿真中不起任何作用。

零阶保持器(ZOH,Zero-Order Hold)是将输入信号每过一个采样时间更新一次,并保持到下一次采样,多用于将连续信号离散化。

Signal Builder可以生成各式各样的信号,也可以从workspace和外部导入。

1.创建excel文件

 2.导入到SB中:打开设置,选择File下Import from File

 如何查看模型模块的执行顺序?

 如何设置多速率模型?打开Block parameter参数,设置为原子,然后设置采样时间[0.2,0.1]表示偏置为0.1后开始,速率为0.2。

三、滤波算法

3.1 均值滤波

均值滤波是典型的线性滤波算法,是指用当前像素点周围nxn个像素值的均值来代替当前像素值。

当前是指设置一个缓冲区Buf,存储上N个时刻的值,然后取平均值作为当前值。

3.2 中值滤波

中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。
中值滤波的方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列,选取中间的数值。

3.3 低通滤波

一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。滤波系数越小,滤波结果越平稳,灵敏度越低;滤波系数越大,灵敏度越高,滤波结果越不稳定。

四、Model Verification

模型检查模块主要分为基本用途,防止报错,底层实现,结果观测,梯度检测提示

Check Discrete Gradient 模块用于检查本时刻和上一时刻差值。

 Assertion模块对是否为零进行验证,为零报错。

Check  Static Range 检查输入信号的最大最小值,超出范围报错。

五、Model Coverage

执行覆盖度Execution Coverage,EC是最基本的覆盖形式。对于每个项目,执行覆盖度确定项目是否在仿真期间执行

决策覆盖度Decision Coverage,DC:分析表示模型中决策点的元素,例如 Switch 模块或 Stateflow 状态。对于每个项目,决策覆盖度确定通过仿真所遍历的项目的仿真路径总数的百分比

条件覆盖度Condition Coverage,CC:分析输出其输入(例如,逻辑运算符模块)和Stateflow转移的逻辑组合的模块。当测试用例导致模型中逻辑模块的每个实例的每个输入以及转移的每个条件在仿真期间至少为真一次,在仿真期间至少为假一次时,测试用例可实现完全覆盖。条件覆盖度分析报告测试用例是否完全覆盖了模型中每个模块。

收集模型的覆盖度时,可能无法实现 100% 的条件覆盖度。例如,如果指定短路逻辑模块,通过在配置参数的覆盖度窗格中选择将 Simulink 逻辑模块视为短路,您可能无法实现该模块的 100% 条件覆盖度。

修正条件决策覆盖度MCDC:Simulink Coverage 软件修正的条件/决策覆盖度分析扩展了决策和条件覆盖度功能。它分析输出其输入和 Stateflow 转移的逻辑组合的模块,以确定测试用例测试逻辑模块输入和转移条件的独立性的程度。

  • 当一个输入的变化(独立于任何其他输入)导致模块输出发生变化时,测试用例可实现模块的完全覆盖。
  • 当至少一次条件的更改触发每个条件的转移时,测试用例可实现 Stateflow 转移的完全覆盖。

在模型配置中点击Coverage,勾选Enable coverage analysis,在Coverage metrics中选择具体的覆盖度类型,运行模型后会自动弹出覆盖度窗口。

 

 

 六、Simulink测试实例

具备成为VIP的条件1&&2&&(3||4);1年龄满18岁,2至少充过100元,3游戏年龄至少1年,4被举报次数少于3次

使用Signal Builder作为测试输入,设置输入及输出VIP

 简单的模型设置为:

 子系统为:

 测试输出结果:

 打开Simulink Data Inspector

 七、Simulink Test

Test Sequence && Test Assessment

使用Test Sequence 模块可以指定测试步骤,行为,转移。当输入时间序列步骤时,应当提供时间定义的测试向量。一个test sequence 可以包含测试步骤,且测试步骤是富有层级的,根据Tag进行跳转。编写示例:

 Test Assessment与Test Sequence非常类似,但是作为评估仿真测试场景,步骤来使用,关键词是Verify

示例1:

模型如下:

 设置TestSequence

 设置Test Assessment:

 示例2:

1.打开sltestTestSequenceExample

2.右击shift_controller建立Test Harness,Sources  and Sink 选择Test Sequence

  3.添加常量Limit设置为2,并编写序列步骤

 4.将仿真时间设置为15s,然后运行test harness

 Simulation Inspector

 示例3:

八、Test Manager

TestManager的组件包含下面的关系:Test File >Test Suite > Test Case > Simulation = Baseline,

Test File对应模型文件,Test Suite 对应子系统,Test Case 对应子功能。

simulation test 不依赖于其他的文件,只要TestHarness可以执行通过,那么simulation test也可以通过。Baseline test依赖外部文件,比如期望输入和输出。

模型:

simulation test

 然后对每一个子系统建立一个test harness,建立4个harness, constant 作为输入。

九、Test Harness 

Baseline test 测试模型如下:

 该子系统的功能是对值进行有效性验证:

 对该子系统创建Test Harness:

 创建Signal Builder信号Group1和Group2:

Test File:一个Test File对应一个模型文件

Test Suite:每一个测试文件中,都可以定义若干个Test Suite,可以把同一类型或同一功能的测试用例放到一个Test Suite中
Test Case:每一个Test Suite中,可以定义若干个Test Case,Test Case中规定了测试详细的执行信息。实际测试执行的时候也针对每一个Test Case进行测试的
Create Test Case from External File:测试用例的具体信息从excel模板中提取,这篇文章重点介绍以这种形式来创建测试用例

 在Harness中打开Test Manager, 创建TestFile并对Test Suit和Test case命名,在case中“System Under Test”选择模型及harness 文件名,Baseline Criteria中加载期望输出,(如果不会,可以点击Capture给你创建一个示例),如果有多个输出,要对列的名字加以命名。

 在“Iterations”栏中点击“Auto Generate”,并在右上角+号栏选择Baseline,选择相应的文件

 点击运行即可生成测试结果,也可以导出测试报告Report。

 TestCase 设置项描述:

TAGS:可以给一个标签名,比如按照功能,测试类型等,方便以后批量查找测试用例
DESCRIPTION:可以给描述测试用例的测试步骤,方法等,方便理解
REQUIREMENTS:可以和需求关联。Matlab现在有“Simulink Requirements”这个Toolbox,可以在里面写需求文档,将需求和模型,以及对应的测试用例关联起来,以满足A-ASPICE或者ISO26262所规定的软件开发流程中的可追溯性的要求。
SYSTEM UNDER TEST:里面设置了要被测试的模型,或者针对模型中所创建的某一个Test Harness模型进行测试

PARAMETER OVERRIDES:这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的,里面列出了某个测试用例中,需要改变的参数

CALLBACKS:里面分为3个不同时刻的,运行我们想要的脚本

INPUTS:定义测试的输入信号,这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的。另外这边有两个选项可以勾选,如果勾选“Include input data in test result”的话,在最后的结果中,也会显示输入信号。如果勾选“Stop simulation at last time point”的话,仿真测试到最后一个输入点的时候就会停止。

SIMULATION OUTPUTS:可以在里面再选取模型中logged的信号作为观测量
CONFIGURATION SETTINGS OVERRIDES:可以在仿真测试的时候对原模型的设置进行覆盖
BASELINE CRITERIA:里面设置了期望值,以及比较仿真测试结果和期望值的一些参数。这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的。但可以点击Edit在excel文件中修改。对比数据时,可以设置绝对误差,相对误差,时序领先误差和时序滞后误差。

ITERATIONS:迭代测试。这里如果是根据excel模板生成的测试用例的话,是锁定不能修改的。会根据测试用例数自动生成,表示这个测试会根据不同的配置重复进行

COVERAGE SETTINGS:统计覆盖度的设置。如果需要统计模型的覆盖度的话,就勾选“Record coverage for referenced models”和“Record coverage for system under test”

test Sequence基本知识:

ramp(et)根据测试步执行的时间返回值,也就是测试步执行时间,可以用这个函数来线性变化输出,et表示的是当前测试步执行的时间

Heaviside(x):创建一个阶跃信号,x<0时输出0,x>0时输出1

swatooth(x)创建一个锯齿波,要指定测试步骤内的锯齿波周期数,请将此运算符与经过时间(et)运算符一起使用;sawtooth(et/10) 10s一个周期的锯齿波

square(x)创建周期为1且范围为-1到1的方波。在区间0<=x<1中,square(x)返回1表示0<=x<0.5,返回-1表示0.5<=x<1。square(et/10) 10s一个周期的方波

triangle(x)创建周期为1且范围为-1到1的三角形波。在区间0<=x<0.5时,三角形(x)增加。三角波和锯齿波的区别在于三角波的上升和下降时间相等;triangle(et/10)10s一个周期的三角波

verify(expression,errorMessage)为失败的verify语句返回指定的错误消息。如果在Test manager中运行测试,错误消息将显示在仿真日志中。如果在Test manager之外运行测试,则诊断查看器中将显示该消息

在实时环境中,验证语句失败不会产生警告。但是,如果在Test manager中运行实时测试用例,则失败将显示在测试用例结果的验证语句部分。还可以使用getVerifyRuns访问有关验证运行的信息

verify(expression,identifier,errorMessage) 比上面一个多了标识,

verify(x > y && z > 10,'TestReq1:bothGreater','x, y, and z are %d,%d,%d',x,y,z)该验证语句的结果以标签TestReq1:bothCreate开头,如果测试失败,则以errorMessage开头

assert(expression)对逻辑表达式求值。如果assert语句的计算结果为false,仿真将停止并返回错误。assert(expression,errmsg)为失败的assert语句返回指定的错误消息字符串(errmsg)

test Harness总结:

1.如果验证的模型比较简单,直接上输入:Signal Builder仿真,输出 baseline excel

2.模型比较复杂也可以用上述方法,Signal Builder使用外部excel作为输入,建立多个group,然后使用迭代的方法进行测试,输出 baseline excel

3.建立testharness使用test sequence 作为输入,拷贝之前建立的测试用例excel,每一个case对应一个testHarness。

4.使用import和output,这样的话建立testFile使用模板来建立比较快速

5.使用Constant 作为输入,使用Model Verification来对比;直接在Constant中建立测试用例即可,每一个case对应一个testHarness

 十、 学习

命令窗口demo,doc,help xx。

Video Portal Main Page - MATLAB & Simulink (mathworks.cn)

首页 - MATLAB中文论坛 (ilovematlab.cn)

参考:

MATLAB Simulink的各种模型覆盖度 - 知乎 (zhihu.com)

使用Simulink Test进行单元测试 - 知乎 (zhihu.com)Test Sequence与Test Manager联合测试Simulink模型_赞哥哥s的博客-CSDN博客

相关文章:

Simulink壁咚(一)——What and How

目录 一、前言 二、Simulink 知多少 三、滤波算法 四、Model Verification 五、Model Coverage 六、Simulink测试实例 七、Simulink Test 八、Test Manager 九、Test Harness 十、 学习 一、前言 Simulink从2017b以后更加工程化和实用化&#xff0c;基于MBD的功能日趋…...

【PyTorch】Pytorch基础第0章

本文参加新星计划人工智能(Pytorch)赛道&#xff1a;https://bbs.csdn.net/topics/613989052 这是目录PyTorch的简介PyTorch 构建深度学习模型的步骤搭建pytorch使用环境PyTorch的简介 PyTorch 是一个开源的机器学习框架&#xff0c;由 Facebook 的人工智能研究院&#xff08;…...

Android学习总结

积累熟练掌握 Java 语言&#xff0c;面向对象分析设计能力&#xff0c;反射原理&#xff0c;自定义注解及泛型&#xff0c;多次采用设计模式重构公司项目&#xff1b;熟练掌握 IVM 原理&#xff0c;反射&#xff0c;动态代理以及对 ClassLoader 热修复有比较深的理解&#xff1…...

虚拟机ubuntu安装samba服务

安装samba apt-get install samba 新建一个共享目录 mkdir /home/l/work chmod 777 /home/l/work 配置服务 配置 /etc/samba/smb.confsudo smbpasswd -a l(添加用户名名称) 防火墙关闭 Ubuntu中 我们使用命令查看当前防火墙状态; sudo ufw status inactive状态是防火墙关闭…...

开发板中的内存压力测试,你了解多少?

1. 测试目的内存压力测试的目的是评估开发板中的内存子系统性能和稳定性&#xff0c;以确保它能够满足特定的应用需求。开发板通常用于嵌入式系统、物联网设备、嵌入式智能家居等场景&#xff0c;这些场景对内存的要求通常比较高。其内存压力测试的主要目的有&#xff1a;1.对确…...

MATLAB | 这些花里胡哨的热图怎么画

好早之前写过一个绘制相关系数矩阵的代码&#xff0c;但是会自动求相关系数&#xff0c;而且画出来的热图只能是方形&#xff0c;这里写一款允许nan值出现&#xff0c;任意形状的热图绘制代码&#xff0c;绘制效果如下&#xff1a; 如遇到bug请后台提出&#xff0c;并去gitee下…...

Java开发的一些编码建议

1、无论是类、方法、字段、变量&#xff0c;尽可能的限制他们的作用范围&#xff0c;可以避免出现不必要的错误&#xff1b;同时虚拟机也能有更大的优化空间。 2、错误越早发现越好&#xff0c;编译时发生错误比在运行时发生错误好。而且编译时错误能更好的定位问题所在。 这…...

【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.59】引入ASPP模块

前言作为当前先进的深度学习目标检测算法YOLOv8&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列文章&#xff0c;将重点对YOLOv8的如何改进进行详细的介绍&…...

C++STL set/multiset容器 构造和赋值 大小和交换 插入和删除 查找和统计

文章目录set/multiset容器1 set容器 基本概念2 set容器 构造和赋值3 set容器 大小和交换4 set容器 插入和删除5 set容器 查找和统计set/multiset容器 1 set容器 基本概念 简介&#xff1a; 所有元素都会在插入时会被自动排序&#xff0c;例如&#xff0c;在set容器放入元素1、…...

产品研发项目进度管理软件工具有哪些推荐?整理10款最佳进度管理软件

项目进度管理是确保项目按时完成的关键过程&#xff0c;使用合适的项目进度管理工具能确保帮助项目管理者实时了解和控制项目的进展情况&#xff0c;及时发现和解决问题&#xff0c;减少项目风险&#xff0c;提高项目效率和管理水平。这里将整理出国内外最受欢迎的10款项目进度…...

「ML 实践篇」分类系统:图片数字识别

目的&#xff1a;使用 MNIST 数据集&#xff0c;建立数字图像识别模型&#xff0c;识别任意图像中的数字&#xff1b; 文章目录1. 数据准备&#xff08;MNIST&#xff09;2. 二元分类器&#xff08;SGD&#xff09;3. 性能测试1. 交叉验证2. 混淆矩阵3. 查准率与查全率4. P-R 曲…...

从大专到测开,上海某字母站大厂的面试题,岗位是测开(25K*16)

简单介绍一句&#xff0c;大专出身&#xff0c;三年经验。跳了四次槽&#xff0c;面试了无数次&#xff0c;现在把自己的面试经验整理出来分享给大家&#xff0c;堪称必杀技&#xff01; 1&#xff0c;一切从实际出发&#xff0c;对实际工作进行适当修饰 2&#xff0c;不会的简…...

【面试题】Python软件工程师能力评估试题(一)

文章目录前言应试者需知&#xff08;一&#xff09;Python 语言基础能力评估1、理解问题并完成代码&#xff1a;2、阅读理解代码&#xff0c;并在空白处补充完整代码&#xff1a;3、编写一个装饰器&#xff1a;exposer4、阅读代码并在空白处补充完整代码&#xff1a;5、自行用P…...

Java八股文(Java多线程面试题)

并行和并发的区别&#xff1f;&#xff08;1&#xff09;并行是指两个或者多个事件在同一时刻发生&#xff1b;而并发是指两个或多个事件在同一时间间隔发生&#xff1b;&#xff08;2&#xff09;并行是在不同实体上的多个事件&#xff0c;并发是在同一实体上的多个事件&#…...

小程序当前页面如何分享别的页面内容呢?

需求分析 因为功能的需要分为两点 他需要调转转发&#xff0c;并且有首页转发点击button按钮进行转发邀请好友帮忙助力&#xff0c;如何做到一个页面多种转发 如何区分&#xff0c;是button转发还剩右上角三个点转发呢&#xff1f; 通过onShareAppMessage()这个函数的事件…...

编写Java哪个编译器好

现在能够编写Java代码的工具简直不要太多&#xff0c;各种各样五花八门&#xff0c;但目前效率最高的还是Intellij Idea。但这个工具对于完全零基础的小白来说&#xff0c;第一次用起来是比较复杂的&#xff0c;因为它的功能太多了。这就好比你要学开车&#xff0c;如果上来就给…...

第十六章 Java为什么使用序列化

为何要指定serialVersionUID的值如果不指定显示serialVersionUID的值&#xff0c;jvm在序列化时会自动生成一个serialVersionUID&#xff0c;跟属性一起序列化&#xff0c;再进行持久化或者网络传输&#xff0c;在反序列化时&#xff0c;jvm会根据属性自动生成一个新版的serial…...

28岁小公司程序员,无车无房不敢结婚,要不要转行?

大家好&#xff0c;这里是程序员晚枫&#xff0c;又来分享程序员的职场故事了~ 今天分享的这位朋友叫小青&#xff0c;我认识他2年多了。以前从事的是土木行业&#xff0c;2年前找我咨询转行程序员的学习路线和职业规划后&#xff0c;通过自学加入了一家创业公司&#xff0c;成…...

出道即封神的ChatGPT,现在怎么样了?

从互联网的普及到智能手机&#xff0c;都让广袤的世界触手而及&#xff0c;如今身在浪潮中的我们&#xff0c;已深知其力。前阵子爆火的ChatGPT&#xff0c;不少人保持观望态度。现如今&#xff0c;国内关于ChatGPT的各大社群讨论&#xff0c;似乎沉寂了不少&#xff0c;现在怎…...

【计算机视觉】CNN 可视化算法

文章目录一、CAM算法1.1 概述1.2 CAM算法介绍二、Grad-CAM算法2.1 概述2.2 Guided Backpropagation2.3 Occlusion Sensitivity2.4 Grad-CAM 整体结构和效果2.5 Grad-CAM 实现细节一、CAM算法 1.1 概述 本文介绍 2016 年提出的 CAM (Class Activation Mapping) 算法&#xff0…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

Mac flutter环境搭建

一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理&#xff1a;检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;RankRAG&#xff1a;Unifying Context Ranking…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述&#xff08;300字左右&#xff09; 在数据库开发中&#xff0c;面对大量数据的处理任务时&#xff0c;单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”&#xff0c;深入探讨如何通过批量操作和游标技术提…...