MATLAB/Simulink如何创建自己的库

本文详细介绍如何在MATLAB R2022a环境下使用Simulink创建自定义库,并将其添加到Simulink库浏览器中。包括创建库、添加子库及调整库位置的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 前言

        本文以Matlab R2022a为实验平台,介绍在Simulink库浏览器中添加库的方法、库浏览器的库里添加子库方法、设置库在库浏览器中的位置的方法。

1. 在库浏览器中添加库

        (1)创建一个库文件。在Simulink的起始页面,点击空白库,点击创建库

(2)在新建的库文件中搭建需要的模型;以Clark变换为例,在库文件中创建模型:

(3)框选该模型,右键,点击创建子系统,得到一个模型:

 (4)模型搭建完成后,回到Matlab工作区,在工作区输入以下代码:

set_param(gcs,'EnableLBRepository','on');

只有将EnableLBRepository库属性设置为on,我们创建的库才能够被库浏览器找到。

 (5)Ctrl + S 保存库文件,命名为Math.slx

(6) 在Math.slx所在文件夹下,创建脚本文件slblocks.m,在该脚本文件中添加以下内容,并保存:

function blkStruct = slblocks

    Browser.Library = 'Math';
    % 'Math' 为库文件名,不需要带扩展名

    Browser.Name = 'Math';
    % 'Math' 是出现在库浏览器中的名词

    blkStruct.Browser = Browser;

 (7)将模型Math.slxslblocks.m文件所在的文件夹路径添加到Matlab的搜索路径中:

(8)打开Simulink库浏览器,按F5刷新,此时可以看到在库浏览器中出现了Math库与对应的模型。

2. 库浏览器的库里添加子库方法

        如果说需要将Math库作为子库,添加到另一个库(My FOC Library)中,需要按照如下操作:

(1)创建My FOC Library库文件;在Simulink的起始页面,点击空白库,点击创建库

(2)Ctrl + S 保存库文件到Math的同一个文件夹下面,命名为MyFOCLibrary.slx。 

(3)模型搭建完成后,回到Matlab工作区,在工作区输入以下代码: 

set_param(gcs,'EnableLBRepository','on');

(4)在MyFOCLibrary.slx中放入subsystem模块,在库文件中搜索subsystem模块,添加到MyFOCLibrary.slx中,并删除subsystem的输入输出,将其命名为Math。

 (5)右键单击命名为Math的Subsystem模块,选择属性,选择回调,选择OpenFcn,输入Math

 (6)在Matlab工作区输入以下代码后保存MyFOCLibrary.slx文件。

(7)将文件夹下的slblocks.m脚本文件进行修改以下内容并保存:

function blkStruct = slblocks
    Browser.Library = 'MyFOCLibrary';
    % 'MyFOCLibrary' is the name of the library

    Browser.Name = 'My FOC Library';
    % 'My FOC Library' is the library name that appears
    % in the Library Browser

    blkStruct.Browser = Browser;

(8)打开Simulink库浏览器,按F5刷新,即可看到My FOC Library库中包含了Math库。

3. 设置库在库浏览器中的位置

 (1)在需要调整位置的库的文件夹下添加sl_customization.m脚本文件,进行修改并保存:

function sl_customization(cm)
	% Change the order of libraries in the Simulink Library Browser. 
	cm.LibraryBrowserCustomizer.applyOrder({'My FOC Library',-2});
    %'My FOC Library'是要设置的库的名称,-2是库所在位置的优先级,越小排序越靠前
end

        Simulink Library Browser中各个工具箱的排列顺序是内置的,由优先级和名称2个因素决定。优先级数字越小工具箱排位越靠前;对于同一优先级的工具箱按照字母顺序排列。默认情况下Simulink库优先级为-1,其他工具箱优先级为0。

(2)在Matlab工作区输入以下代码:

sl_refresh_customizations

(3)重新打开库浏览器,可以看见My FOC Library被提到了最上面。

### 语义分割技术概述 计算机视觉算法旨在从图像和视频中提取重要信息,而语义分割作为其中的一项核心任务,提供了关于图像中不同对象类别的像素级分类[^1]。具体来说,语义分割不仅能够识别出图片里存在哪些物体类别,还能精确地标记出每一个类别对应的区域位置。 对于实现高效的语义分割而言,深度学习方法已经成为主流解决方案之一。这类方案依赖于卷积神经网络(CNN),特别是那些专为处理此类问题设计的架构,比如全卷积网络(Fully Convolutional Networks, FCN)[^2]、U-Net以及DeepLab系列模型等。这些模型通过多层次特征抽取与融合机制,在保持空间分辨率的同时增强了对上下文的理解能力。 #### 基础概念和技术细节 为了达到更好的效果,研究者们不断探索新的组件和技术改进现有框架: - **Atrous/Dilated Convolutions**: 这种特殊的卷积操作允许在网络内部维持较高的输入尺寸而不增加参数量;同时扩大感受野范围从而捕捉更广泛的空间信息[^2]。 - **跳跃连接(Skip Connections)**: 如U-Net所采用的设计思路,即在编码器阶段保存低层特征并通过跳过链接传递给解码部分,有助于恢复细粒度结构并提高边界定位精度[^3]。 - **多尺度推理(Multi-scale Inference)** 和 **自适应池化(Adaptive Pooling)** : 提升模型应对不同大小目标的能力,确保即使是在极端缩放条件下也能获得稳定表现。 #### 应用实例展示 以人物图像抠图为例说明如何利用上述提到的技术构建实际应用场景下的语义分割系统。在这个过程中,选择合适的预训练权重初始化是非常重要的一步,因为这能显著减少收敛时间并提升最终性能指标。此外,针对特定领域数据集进行微调也是必不可少的操作,这样才能让模型更加贴合业务需求特点。 ```python import torch from torchvision import models # 加载预训练好的deeplabv3_resnet101模型用于人物分割 model = models.segmentation.deeplabv3_resnet101(pretrained=True) def segment_person(image_tensor): model.eval() with torch.no_grad(): output = model(image_tensor)['out'] # 获取预测结果中属于人的部分(假设标签索引为人) person_mask = (output.argmax(dim=1) == 1).float() return person_mask ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无法复原的锟斤拷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值