MATLAB-Simulink并行仿真示例

 一、概述

         在进行simulink仿真的过程中常常遇到CPU利用率较低,仿真缓慢的情况,可以借助并行仿真改善这些问题,其核心思想是将参数扫描蒙特卡洛分析多工况验证等任务拆分成多个子任务,利用多核CPU或计算集群的并行计算能力,显著缩短整体仿真时间。
主要使用的函数包括:

1.parpool(numCore)函数,目的是开启并行池(具体数量取决于计算机物理内核数)

2.Simulink.SimulationInput函数,用于封装模型参数、变量修改、回调函数等配置,简单来说就是建立一个数组,存放并行仿真时模型的参数

3.parsim函数,用于SimulationInput数组分发到各工作进程执行

二、流程

大体使用过程如下

1.开启并行工作池

clear; clc;

% start parpool by codes.

delete(gcp('nocreate')); % 关闭之前的并行池

numCore = 2; % 设定并行工作池的数量(受限于CPU真实内核数)

p = parpool(numCore); % start parpool.

2.打开simulink文件

%打开模型

modl = 'u_of_ideal_full_bridge_LLC_double_vol_blue';

open_system(modl);

load_system(modl);

3.设置参数

Lm = 20e-6;

k = [1 10 100 1000];

Lr = zeros(size(k));

for i = 1:length(Lr)

Lr(i) = Lm/k(i);

end

4.建立输入函数

In(length(k)) = Simulink.SimulationInput(modl); %内存预分配

for i = 1 : length(k)

In(i) = Simulink.SimulationInput(modl);

In(i) = In(i).setVariable('Lr',Lr(i));

In(i) = In(i).setPostSimFcn(@(x) u_PostSimFunction(x));%这行代码用于设置后处理函数,具体作用在后面解释

end

5.运行仿真

Out = parsim(In,'ShowSimulationManager','on');%运行结果会存储在OUT中

三、后处理函数作用

simulink仿真的数据会通过to workscape模块传递到基础工作区,但是在并行仿真时,数据都会保存在计算机内存里,这样子很容易导致计算机内存爆满,所以可以设置一个后处理函数,在每次仿真结束后直接对仿真数据进行处理,把处理结果保存,其余数据清空。

示例中的后处理函数如下:
 

function newout = PostSimFunction(simOut, fm)

%计算阻抗

newout.Ro = sum(simOut.get('Vout') .* exp(-1j * 2 * pi * fm * simOut.get('to')))...

/sum(simOut.get('Iout') .* exp(-1j * 2 * pi * fm * simOut.get('to')));

%计算效率

newout.u = (mean(simOut.get('Vout'))*mean(simOut.get('Iout')))/(mean(simOut.get('Vi'))*mean(simOut.get('Ii')));

%清空simOut

simOut.Vout = 0;

simOut.Iout = 0;

simOut.to = 0;

simOut.fm = 0;

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/67592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Workbench 中的热源仿真

探索使用自定义工具对移动热源进行建模及其在不同行业中的应用。 了解热源动力学 对移动热源进行建模为各种工业过程和应用提供了有价值的见解。激光加热和材料加工使用许多激光束来加热、焊接或切割材料。尽管在某些情况下,热源 (q) 不是通…

I2C基础知识

引言 这里祝大家新年快乐!前面我们介绍了串口通讯协议,现在我们继续来介绍另一种常见的简单的串行通讯方式——I2C通讯协议。 一、什么是I2C I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司在上个世纪80年代开发的&#…

深度学习 DAY3:NLP发展史

NLP发展史 NLP发展脉络简要梳理如下: (远古模型,上图没有但也可以算NLP) 1940 - BOW(无序统计模型) 1950 - n-gram(基于词序的模型) (近代模型) 2001 - Neural language models&am…

CSS 背景与边框:从基础到高级应用

CSS 背景与边框:从基础到高级应用 1. CSS 背景样式1.1 背景颜色示例代码:设置背景颜色 1.2 背景图像示例代码:设置背景图像 1.3 控制背景平铺行为示例代码:控制背景平铺 1.4 调整背景图像大小示例代码:调整背景图像大小…

HarmonyOS简介:应用开发的机遇、挑战和趋势

问题 更多的智能设备并没有带来更好的全场景体验 连接步骤复杂数据难以互通生态无法共享能力难以协同 主要挑战 针对不同设备上的不同操作系统,重复开发,维护多套版本 多种语言栈,对人员技能要求高 多种开发框架,不同的编程…

如何使用tushare pro获取股票数据——附爬虫代码以及tushare积分获取方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 一、Tushare 介绍 Tushare 是一个提供中国股市数据的API接口服务,它允许用户…

观察者模式和订阅发布模式的关系

有人把观察者模式等同于发布订阅模式,也有人认为这两种模式存在差异,本质上就是调度的方法不同。 发布订阅模式: 观察者模式: 相比较,发布订阅将发布者和观察者之间解耦。(发布订阅有调度中心处理)

【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)

目录 1 -> HML语法 1.1 -> 页面结构 1.2 -> 数据绑定 1.3 -> 普通事件绑定 1.4 -> 冒泡事件绑定5 1.5 -> 捕获事件绑定5 1.6 -> 列表渲染 1.7 -> 条件渲染 1.8 -> 逻辑控制块 1.9 -> 模板引用 2 -> CSS语法 2.1 -> 尺寸单位 …

Python的那些事第五篇:数据结构的艺术与应用

新月人物传记:人物传记之新月篇-CSDN博客 目录 一、列表(List):动态的容器 二、元组(Tuple):不可变的序列 三、字典(Dict):键值对的集合 四、集合&#xf…

【AI】DeepSeek 概念/影响/使用/部署

在大年三十那天,不知道你是否留意到,“deepseek”这个词出现在了各大热搜榜单上。这引起了我的关注,出于学习的兴趣,我深入研究了一番,才有了这篇文章的诞生。 概念 那么,什么是DeepSeek?首先百…

MapReduce简单应用(一)——WordCount

目录 1. 执行过程1.1 分割1.2 Map1.3 Combine1.4 Reduce 2. 代码和结果2.1 pom.xml中依赖配置2.2 工具类util2.3 WordCount2.4 结果 参考 1. 执行过程 假设WordCount的两个输入文本text1.txt和text2.txt如下。 Hello World Bye WorldHello Hadoop Bye Hadoop1.1 分割 将每个文…

Dest1ny漏洞库:用友 U8 Cloud ReleaseRepMngAction SQL 注入漏洞(CNVD-2024-33023)

大家好,今天是Dest1ny漏洞库的专题!! 会时不时发送新的漏洞资讯!! 大家多多关注,多多点赞!!! 0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚…

2.1.2 Bayer阵列与去马赛克

文章目录 Bayer阵列去马赛克方法 Bayer阵列 由于传感器只能感受到光的强度,而无法感知颜色,所以需要用红、绿、蓝颜色的滤光片将光中的R、G、B亮度滤出,再通过R、G、B的组合得到各种色彩。Bayer阵列是使用一个传感器获得彩色图像的方法&#…

红黑树的学习

红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因…

2025年01月31日Github流行趋势

项目名称:Qwen2.5项目地址url:https://github.com/QwenLM/Qwen2.5项目语言:Shell历史star数:13199今日star数:459项目维护者:jklj077, JustinLin610, bug-orz, huybery, JianxinMa项目简介:Qwen…

人工智能|基本概念|人工智能相关重要概念---AI定义以及模型相关知识

一、 前言: 最近deepseek(深度求索)公司的开源自然语言处理模型非常火爆。 本人很早就对人工智能比较感兴趣,但由于种种原因没有过多的深入此领域,仅仅是做了一点初步的了解,借着这个deepseek&#xff0…

Python GIL(全局解释器锁)机制对多线程性能影响的深度分析

在Python开发领域,GIL(Global Interpreter Lock)一直是一个广受关注的技术话题。在3.13已经默认将GIL去除,在详细介绍3.13的更亲前,我们先要留了解GIL的技术本质、其对Python程序性能的影响。本文将主要基于CPython&am…

Git 版本控制:基础介绍与常用操作

目录 Git 的基本概念 Git 安装与配置 Git 常用命令与操作 1. 初始化本地仓库 2. 版本控制工作流程 3. 分支管理 4. 解决冲突 5. 回退和撤销 6. 查看提交日志 前言 在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理&am…

(笔记+作业)书生大模型实战营春节卷王班---L0G2000 Python 基础知识

学员闯关手册:https://aicarrier.feishu.cn/wiki/QtJnweAW1iFl8LkoMKGcsUS9nld 课程视频:https://www.bilibili.com/video/BV13U1VYmEUr/ 课程文档:https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/Python 关卡作业:htt…

仿真设计|基于51单片机的高速路口货车称重系统仿真

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现(protues8.7) 程序(Keil5) 全部内容 资料获取 具体实现功能 (1)LCD1602液晶第一行显示当前的车辆重量,第二行显示车辆重量…