开箱报告,Simulink Toolbox库模块使用指南(二)——MATLAB Fuction模块

文章目录

前言

[MATLAB Fuction模块](#MATLAB Fuction模块)

采样点设置

[FFT 求解](#FFT 求解)

分析和应用

总结


前言

见《开箱报告,Simulink Toolbox库模块使用指南(一)------powergui模块

MATLAB Fuction模块

MATLAB Fuction模块是在Simulink建模仿真或生成代码时,调用Matlab库函数或自定义函数的一个接口。其在Simulink Toolbox库中的位置如下图所示。

Mathworks官方Help对该模块的说明如下所示。

MATLAB Fuction模块里边可调用的库函数包括abs()、sqrt()、mod()、max()、min()、sun()、mean()、var()、std()、sin()、fft()等。其他更多库函数可以在Help中查找,如下图所示。

这些库函数涉及的数学基础和扩展知识非常多,本文选取其中的fft()函数为例,重点介绍该函数在MATLAB Fuction模块中的使用方法。fft()函数在官方Help中的介绍如下:

采样点设置

这里举例一个AC220V 50Hz的电网中,叠加了一个AC110V 100Hz的信号,两个信号源的设置如下:

Matlab 复制代码
T = 0.001;    %信号采样周期1ms
Fre = 1/T;    %信号采样频率1000Hz
Length = 500;    %500个采样点
t = (0:Length-1)*T;    %信号时间轴
U1 = 220*sqrt(2)*sin(2*pi*50*t);    %AC220V@50Hz信号
U2 = 110*sqrt(2)*sin(2*pi*100*t);    %AC110V@100Hz信号
S = U1 + U2;    %耦合信号

上述两个AC信号耦合后得到的S信号如下:

FFT 求解

第一步,使用MATLAB Fuction模块调用fft()库函数对上述叠加信号的采样点进行解算,函数代码如下所示:

Matlab 复制代码
function [freq, y] = fcn(S)

Fs = 1000;

L = length(S);
Y = fft(S);
P2 = abs(Y)/L;
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);

freq = (0:L/2)*Fs/L;
y = P1;

第二步,在Simulink模型中使用两个Display模块,查看上述函数计算获得的freq向量和y向量,如下图所示:

为了更直观的看到freq和y的对应关系,可以用plot()函数将两个信号画成一条相关曲线,如下图所示:

分析和应用

MATLAB Fuction模块在Simulink模型仿真和自动生成代码上面的应用功能非常强大,主要得益于MATLAB自带了丰富的库函数,并且开发人员还能基于该模块开发自己的函数库。项目中使用MATLAB Fuction模块后,很多功能开发的代码量大大减少,同时也意味着软件开发全流程的人力和时间投入大幅缩减。主要适用于有架构支撑、模块化开发的大型软件项目,可以合理协调团队成员的分工合作,提高代码可控性,增加代码的复用率,减少代码移植障碍。

总结

以上就是本人在使用MATLAB Fuction模块时,一些个人理解和分析的总结,首先介绍了该模块的背景知识,然后分别展示它的求解使用方法,最后分析了该模块的特点和适用场景。

后续还会分享另外几个最近总结的Simulink Toolbox库模块,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成文本人持续分享的动力。

另外,上述例程使用的Demo工程,可以到笔者的主页查找和下载。


版权声明,原创文章,转载和引用请注明出处和链接,侵权必究!

相关推荐
XiYang-DING4 分钟前
【Java SE】Java代码块详解
java·开发语言·python
摇滚侠7 分钟前
Java SpringBoot 项目,项目启动后执行的方法,有哪些方式实现
java·开发语言·spring boot
哈哈很哈哈8 分钟前
逻辑回归Logistic Regression
算法·机器学习·逻辑回归
甄心爱学习13 分钟前
【极大似然估计/最大化后验】为什么逻辑回归要使用交叉熵损失函数
算法·机器学习·逻辑回归
良许Linux16 分钟前
汽车电子技术和汽车网络
网络·单片机·嵌入式硬件·汽车·嵌入式·制造
艾莉丝努力练剑18 分钟前
【Linux进程间通信:共享内存】为什么共享内存的 key 值由用户设置
java·linux·运维·服务器·开发语言·数据库·mysql
Reisentyan23 分钟前
GoLang Learn Data Day 0
开发语言·rpc·golang
Chengbei1124 分钟前
AI 自动逆向 JS 加密!自动抓密钥、出报告,彻底解放双手,解决抓包数据包加密难题
开发语言·javascript·人工智能·安全·网络安全·网络攻击模型
天若有情67327 分钟前
【实战】从零开发企业级 B 端风格字符串值管理系统(Python+MySQL)
开发语言·python·mysql·企业级应用·b端应用
郝学胜-神的一滴27 分钟前
深度学习入门全解析:从核心概念到实战基础 | 技术研讨会精华总结
人工智能·python·深度学习·算法·cnn