simulink性能优化

simulink性能优化

我的经验是,打开Solver Profiler , 从新跑一下模型,只跑很短的一段时间,Solver Profiler 会告诉你那一部分用时间最长,专注更新这一小部分,其他的不用管。

影响simulink仿真速度的原因如下:

1.模型中有使用 MATLAB Function 模块。此时,每个步长在计算时都要调用 MATLAB 去解释执行。这大大降低了仿真速度,解决方法是尽可能改用 Fcn 模块。

2.模型中有以 MATLAB 文件编写的 S 函数。解决方法是将 MATLAB 文件编译为 MEX 文件。此外,如果可能,尽量使用 Simulink 内置的模块代替 S 函数。

3.过小的步长或采样时间。在仿真过程中,保持小步长对捕获重要事件非常重要,但同时,步长过小会产生不必要的输出点,并减慢仿真速度。

4.maximum step size设置太小。请尝试将该属性设置为auto。

5.您可能对精度要求过高。默认的relative tolerance是 0.1%,能满足一般需求。

6.时间跨度(总仿真时间)可能太长。建议缩短。

7.模型中有使用 Memory 模块。该模块会导致变量阶解算器在每个时间步长计算时,被重置回一阶。

8.模型中有使用 Extras 库,例如图形、自动调整、频谱分析。

9.模型中有使用 scope 模块,尽管其影响很可能非常小。

10.代数环,请参考之前发布的更为详细的说明。

11.请不要将白噪声模块接到积分器。对于连续系统,请使用带限制白噪声块。

12.模型的刚度很大,但您使用的是非刚性解算器。请尝试使用ode15s

13.过零检测(zero crossing),可能导致模型在某些仿真时刻“卡住”。您可以禁用该检测。更为具体的说明,请在帮助文档中搜索zero crossing。

14.在 model configuration 中勾选 inline parameters,此时可以将所有参数内置,从而提高速度。

15.使用Simulink自带的加速功能。

16.如果模型非常复杂(涉及大量模型引用和子系统),并且涉及大量数据记录,则仿真速度也会受到影响。

可以尝试以下的方法:

把solver改成fixed time step,用ode4,stepsize先试试1e-3。然后把simscape的solver改成local solver,time step也先设成1e-3,选择backward Euler。用accelerator mode 跑。

s-function
https://zhuanlan.zhihu.com/p/23301801

怎能提升simulink的运行速度

ChatGPT

以下是提升Simulink运行速度的一些方法:

  1. 精简模型:删除不必要的模块和信号,简化模型结构,减少计算量。

  2. 合理设置模拟参数:通过调整模拟参数,如步长和仿真时间,可以减少计算时间。

  3. 使用代码生成:将模型转换为代码,可以加速模型运行。

  4. 使用多核处理器:如果计算机有多个核心,可以在Simulink中配置并行计算,以利用多核处理器的能力。

  5. 关闭不必要的功能:关闭不必要的功能,如绘图和数据记录等,可以提高运行速度。

  6. 使用加速器:Simulink提供了一些加速器,如硬件加速器和软件加速器,可以提高模型运行速度。

  7. 使用代码优化工具:使用代码优化工具可以优化生成的代码,减少计算量,从而提高运行速度。

https://blog.csdn.net/weixin_44182878/article/details/88710960

加速simulink模型的可能方案:
禁止报出小的量化错误
禁止数据输出
编译后使用
采样时间优化
研究滤波模型的输入输出
研究sim函数

提升matlab性能方法

在 Windows® 系统上,memory 函数可用于检查内存详细信息。要了解复制数组如何影响 Windows 系统的内存使用量,请在当前文件夹的一个文件中创建函数 memUsed。该函数调用 memory,以 MB 为单位返回您的 MATLAB 进程使用的内存量。

function y = memUsed
usr = memory;
y = usr.MemUsedMATLAB/1e6;
调用 `memUsed` 以显示当前内存使用量。
format shortG
memUsed
ans =
3966.1
创建一个 2000×2000 数值数组,并观察内存使用量的变化。该数组使用大约 32 MB 的内存。
A = magic(2000);
memUsed
ans =
3998.1

避免临时性的数据副本

避免创建不必要的临时性数据副本,以显著减少所需的内存量。

避免创建临时数组

避免创建大型临时变量,并在不再需要这些临时变量时清除它们。例如,以下代码创建由零组成的、存储为临时变量 A 的数组,然后将 A 转换为单精度:

A = zeros(1e6,1);
As = single(A);

使用一个命令来执行两个操作可更高效地使用内存:

A = zeros(1e6,1,'single');

使用 repmat 函数、数组预分配和 for 循环是处理非双精度数据而不需要内存中的临时存储的其他方法。

使用嵌套函数减少传递的参数

处理大型数据集时,注意 MATLAB 会创建输入变量的临时副本(如果被调用函数修改其值)。这会暂时使存储数组所需的内存翻倍,从而导致 MATLAB 在没有足够内存时生成错误。

在此情形下使用较少的内存的一种方法是使用嵌套函数。嵌套函数共享所有外部函数的工作区,为嵌套函数提供对其通常范围之外的数据的访问权。在如下示例中,嵌套函数 setrowval 可直接访问外部函数 myfun 的工作区,从而无需在函数调用中传递变量副本。当 setrowval 修改 A 的值时,它在调用函数的工作区中修改它。无需使用额外内存为所调用函数存储一个单独数组,且无需返回 A 的修改后的值:

function myfun
A = magic(500);
setrowval(400,0)
disp('The new value of A(399:401,1:10) is')
A(399:401,1:10)
function setrowval(row,value)
A(row,:) = value;
end
end

回收使用的内存

增加可用内存量的一种简单方法是清除您不再使用的大型数组。

定期将您的大型数据保存到磁盘

如果您的程序生成非常大量的数据,请考虑定期将数据写入磁盘。在保存该部分数据后,使用 clear 函数从内存中删除变量并继续生成数据。

从内存中清除不再需要的旧变量

当您重复或以交互方式处理非常大的数据集时,请首先清除旧变量以为新变量腾出空间。否则,MATLAB 需要等大小的临时存储才能覆盖此变量。例如,


a = rand(1e5);
b = rand(1e5);
Out of memory.
More information
clear a
a = rand(1e5);              % New array
~~~<!--autointro-->

matlab字符串比较函数strcmp与ismember

strcmp函数有两个参数,最基本的,可以是两个字符串。如果两个字符串完全相同,返回逻辑1,否则返回逻辑0。

strcmp的两个参数也可以一个是字符串,另一个是元胞数组(多个字符串)。返回一个逻辑值数组,其中每项是元胞数组中的每个字符串与单独字符串的比较结果。

strcmp函数的两个参数也可以是相同尺寸的元胞数组,返回值是对应字符串的比较结果。

ismember可以分别比较字符串的各个字符。

simulink数据类型问题

simulink数据类型错误

将外部输入数据加载到模型 ‘test_230828’ 中的根级输入端口 test_230828/x 时出错。
原因:
错误使用 mian_230824
数据类型无效。该模型配置为从工作区加载其根级端口。这些外部输入具有数据类型 ‘double’。此数据类型与为此根级端口设置的数据类型 ‘int8’ 不一致。
建议的操作:
• 将输入数据的数据类型更改为类型 ‘int8’
• 关闭外部输入加载。 – 修复

解决办法

调整输入端口的属性为double或者把输入数据类型设置为int8就可以了。

抽空写了个python爬虫爬取起点小说《江峰柳月》

上两周整理笔记发现一些哲理性句子,想到了17年看的一部小说,想再看一遍,但苦于满屏的广告,太浪费时间了。于是花了几天时间写了一个爬虫把文章爬下来,看着舒服多了。下面是代码,请合理文明使用,不要用于非法用途。import jsonimport requests, randomfrom requests.exceptions import RequestExceptionimport reimport timeimport randomuser_agent = [ “Mozilla/5.0 (Win

网站关键词快速提高权重SEO

在优化网站的时候,找到正确的关键字是非常重要的,如果所选的关键词偏离了网站本来的主题,那么即使关键词做的再好对于网站来说也是毫无用处的,所以网站关键词怎么设置的问题是相当重要的。那么网站关键词如何设置呢?接下来我们就一起来好好的了解一下吧。网站关键词怎么设置——关键字设置技巧(1) 核心关键词核心关键词通常为热门搜索词,譬如“网站建设”、“网站推广”这样的名词作为核心关键词,这些关键词太热门了,基本上在百度第一页都是做的竞价排名,所以建议大家不要用这种热门关键词,可以选些符合自己产品的精确关键词

查看LINUX进程内存占用情况

查看linux占用内存/CPU最多的进程
可以使用一下命令查使用内存最多的10个进程
ps -aux | sort -k4nr | head -n 10
可以使用一下命令查使用CPU最多的10个进程
ps -aux | sort -k3nr | head -n 10
查看LINUX进程内存占用情况
(1)t

和差化积公式巧计与推导

和差化积公式即三角函数中的一组恒等式: [1] 推导过程对于(1)至(4),可用积化和差公式推导,也可以由和角公式得到,以下用和角公式证明之。由和角公式有,两式相加、减便可得到上面的公式(1)、(2),同理可证明公式(3)、(4)。对于(5)、(6),有对于(7)、(8)、(9)、(10),也可用类似的方法推出。证毕。平方形式的和差化积公式下面不加推导地给出几个公式。对于正余弦平方的减法,同样有和差化积公式: [1] 记忆方法和差化积公式的形式比较复杂,记