matlab中simulink怎样输入s^2+2s+1,用哪个模块?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中simulink怎样输入s^2+2s+1,用哪个模块?相关的知识,希望对你有一定的参考价值。

1. 使用Transfer Fcn模块可以输入传递函数

2. 双击或者拖动添加之后,双击该模块。在分母系数部分输入[1 2 1]即可,即二次项系数为1,一次项系数为2,常数项为1。如果需要更高次在前面自行添加系数,再加一个系数会有三次项[1 1 2 1]为s^3+s^2+2s+1,如果只需要四次项,如s^4+s^2+2s+1,输入[1 0 1 2 1]。

3. 更改完毕(s^2+2s+1)

参考技术A

使用“For Iterator Subsystem”模块。输入方法为:

1、Simulink中新建“New Model”,从“Simulink Library Browser”中拖入“For Iterator Subsystem”模块。

2、双击模块进入,可发现for循环的迭代器。

3、为实现“for(i = 0;I < 10;i++) y = 2i + 5;return y;”的循环语句,Model中图形完善如下。

4、其中,for循环子系统接线如下。

5、迭代器的参数设置如下:其中10表示迭代10次,Zero-based表示循环计数从0开始。

6、运行后,结果如下。

参考技术B SIMILINK模块库按功能进行分为以下8类子库:

(1)Continuous(连续模块)
(2)Discrete(离散模块)
(3)Function&Tables(函数和平台模块)
(4)Math(数学模块)
(5)Nonlinear(非线性模块)
(6)Signals&Systems(信号和系统模块)
(7)Sinks(接收器模块)
(8)Sources(输入源模块)

连续模块(Continuous)continuous.mdl

Integrator:输入信号积分
Derivative:输入信号微分
State-Space:线性状态空间系统模型
Transfer-Fcn:线性传递函数模型
Zero-Pole:以零极点表示的传递函数模型
Memory:存储上一时刻的状态值
TransportDelay:输入信号延时一个固定时间再输出
VariableTransportDelay:输入信号延时一个可变时间再输出

离散模块(Discrete)discrete.mdl

Discrete-timeIntegrator:离散时间积分器
DiscreteFilter:IIR与FIR滤波器
DiscreteState-Space:离散状态空间系统模型
DiscreteTransfer-Fcn:离散传递函数模型
DiscreteZero-Pole:以零极点表示的离散传递函数模型
First-OrderHold:一阶采样和保持器
Zero-OrderHold:零阶采样和保持器
UnitDelay:一个采样周期的延时

函数和平台模块(Function&Tables)function.mdl

Fcn:用自定义的函数(表达式)进行运算
MATLABFcn:利用matlab的现有函数进行运算
S-Function:调用自编的S函数的程序进行运算
Look-UpTable:建立输入信号的查询表(线性峰值匹配)
Look-UpTable(2-D):建立两个输入信号的查询表(线性峰值匹配)

数学模块(Math)math.mdl

Sum:加减运算
Product:乘运算
DotProduct:点乘运算
Gain:比例运算
MathFunction:包括指数函数、对数函数、求平方、开根号等常用数学函数
TrigonometricFunction:三角函数,包括正弦、余弦、正切等
MinMax:最值运算
Abs:取绝对值
Sign:符号函数
LogicalOperator:逻辑运算
RelationalOperator:关系运算
ComplextoMagnitude-Angle:由复数输入转为幅值和相角输出
Magnitude-AngletoComplex:由幅值和相角输入合成复数输出
ComplextoReal-Imag:由复数输入转为实部和虚部输出
Real-ImagtoComplex:由实部和虚部输入合成复数输出

非线性模块(Nonlinear)nonlinear.mdl

Saturation:饱和输出,让输出超过某一值时能够饱和。
Relay:滞环比较器,限制输出值在某一范围内变化。
Switch:开关选择,当第二个输入端大于临界值时,输出由第一个输入端而来,否则输出由第三个输入端而来。
ManualSwitch:手动选择开关

信号和系统模块(Signal&Systems)sigsys.mdl

In1:输入端。
Out1:输出端。
Mux:将多个单一输入转化为一个复合输出。
Demux:将一个复合输入转化为多个单一输出。
Ground:连接到没有连接到的输入端。
Terminator:连接到没有连接到的输出端。
SubSystem:建立新的封装(Mask)功能模块

接收器模块(Sinks)sinks.mdl

Scope:示波器。
XYGraph:显示二维图形。
ToWorkspace:将输出写入MATLAB的工作空间。
ToFile(.mat):将输出写入数据文件。

输入源模块(Sources)sources.mdl

Constant:常数信号。
Clock:时钟信号。
FromWorkspace:来自MATLAB的工作空间。
FromFile(.mat):来自数据文件。
PulseGenerator:脉冲发生器。
RepeatingSequence:重复信号。
SignalGenerator:信号发生器,可以产生正弦、方波、锯齿波及随意波。
SineWave:正弦波信号。
Step:阶跃波信号。

Simulink中常用的模块库包括以下几种:

(1)信宿(Sinks)模块库:包括显示或将输出回写的模块。Display显示输入的值;Output创建子系统的输出端口或外部输出端口;Scope、FloatScope显示仿真时产生的信号;StopSimulation当输入不等于零时停止仿真;Terminator将未连接的输出端口作为终端;XYGraph显示XY坐标图。

(2)信源(Sources)模块库:包括产生各种信号的模块。Band-LimitedWhiteNoise为连续系统引入白噪声;ChirpSignal产生一个扫频信号;Clock产生和显示仿真时间;Constant产生一个常量值;DigitalClock在特定的采样间隔产生仿真时间;Ground将未连接的输入端口接地等。

(3)连续(Continuous)模块库:包括线性函数模型。包括有微分单元(Derivative)、积分单元(Integrator)、线性状态空间系统单元(State-Space)、线性传递函数单元(TransferFen)、延时单元(TransportDelay)、可变传输延时单元(VariableTransportDelay)、指定零极点输入函数单元(Zero-Pole)。

(4)数学操作(SimulinkMathOperations和Fixed-PointBlocketMath)模块库:包含常用的数学函数模块。包括输入信号绝对值单元(Abs),计算一个复位信号幅度与/或相位单元(ComplextoMagnitude-Angle),计算一个复位信号的实部与虚部单元(ComplextoReal-Imag)等数学函数。

(5)通信模块库(ComunicationsBlockset)

信源(CommSources):在这个库中,可以形成随机或伪随机信号,也可以读取文件或模拟压控振荡器(VCO)来产生非随机信号。

BernoulliRandomBinaryGenerator模块:产生伯努利分布的二进制随机数。

BinaryVectorNoiseGenerator模块:产生可以控制“1”的个数的二进制随机向量。

Random-IntegerGenerator模块:产生范围在(0~M-1)内的随机整数。

PoissionIntGenerator模块:产生洎松分布的随机整数。

PNSequenceGenerator模块:产生伪随机序列。

GaussianNoiseGenerator模块:产生离散高斯白噪声。

RayleighNoiseGenerator模块:产生瑞利分布的噪声。

UniformNoiseGenerator模块:产生在一个特定区域内的均匀噪声。

Voltage-ControlledOscillator模块:实现压控振荡器。

信宿(CommSinks):此库中提供了信宿和显示的模块,以使对通信系统的分析更加简便。

TriggeredWritetoFile模块:在输入信号上升沿向文件写入数据。

EnorRateCalculation模块:计算输入信号的误比特率和误符号率。

信源编码(SourceCoding)模块库:信源编码分为两个基本步骤:信源编码和信源译码。信源编码用量化的方法将一个源信号转化成一个数字信号。所得信号的符号都是在某个有限范围内的非负整数。信源译码就是从信源编码的信号恢复出原来的信息。

信道(Channel)模块库:提供各种通信信道模型,比如高斯白噪声信道等
参考技术C

本回答被提问者采纳

matlab中关于S-fun的调用以及子系统的封装

近日学习matlab建模方面的东西,mark一个网站:http://wtclab.net/txfz/jkmulu.html,邵玉斌老师的教案。

本篇记录一个包含S函数的子系统的建立和封装,用S函数产生任意正弦波。

matlab版本:R2017b

 

步骤如下:

①首先建立主系统模型。在命令行窗口输入simulink,在弹出的窗口中新建Blank Model,接着点击simulink工具栏的Library Browser,从中选取模块搭建主系统模型,如下图。

技术分享图片

接着,双击Subsystem搭建子系统内部模型,如下图。

技术分享图片

②系统模型搭建好之后,新建M文件编写S函数,示例代码如下。(注意:函数名需与M文件名一致。)

技术分享图片
function [sys,x0,str,ts] =example1Sfun(t,x,u,flag,Amp,Freq,Phase) 
% 正弦波信号源
switch flag 
    case 0       % flag=0 初始化 
       [sys,x0,str,ts]=mdlInitializeSizes; 
    case 3       % flag=3 计算输出 
       sys=mdlOutputs(t,Amp,Freq,Phase); 
    case {1, 2, 4, 9 }    % 其他作不处理的flag 
       sys=[];            % 无用的flag时返回sys为空矩阵
otherwise % 异常处理 
       error([Unhandled flag = ,num2str(flag)]); 
end 
% 主函数结束 
% 子函数实现(1)初始化函数----------------------------------
function [sys,x0,str,ts] = mdlInitializeSizes  % 
sizes = simsizes;           % 获取SIMULINK仿真变量结构
sizes.NumContStates  = 0;   % 连续系统的状态数为0
sizes.NumDiscStates  = 0;   % 离散系统的状态数为0
sizes.NumOutputs     = 1;   % 输出信号数目是1 
sizes.NumInputs      = 0;   % 输入信号数目是0
sizes.DirFeedthrough = 0;   % 该系统不是直通的 
sizes.NumSampleTimes = 1;   % 这里必须为1 
sys = simsizes(sizes); 
str = [];           % 通常为空矩阵 
x0  = [];           % 初始状态矩阵x0 (零状态情况) 
ts  = [0 0];        % 表示连续取样时间的仿真
% 初始化函数结束 

% 子函数实现(2)系统输出方程函数-----------------------------
function sys = mdlOutputs(t,Amp,Freq,Phase) 
sys = Amp*sin(2*pi*Freq*t+Phase);% 这里写入系统的输出方程矩阵形式即可
% 修改这个函数可以得到任意的波形输出
% 系统输出方程函数结束
View Code

之后要使S-fun模块调用编写好的S函数,需要设置模块的参数。进入子系统,双击S-Function模块,把S函数M文件的名称填入S-Function name,再填写模块的参数,如幅值(Amp)等...

技术分享图片

③封装子系统。右击子系统模块,选择Mask-->Create Mask,进入封装编辑界面。如下图,在左侧导航栏点击Edit创建模块参数,之后设置好参数的名称、标题、初始值等。

技术分享图片

技术分享图片

点击左下角的Preview可以预览参数设置对话框。

技术分享图片

④仿真观察结果。

 

以上是关于matlab中simulink怎样输入s^2+2s+1,用哪个模块?的主要内容,如果未能解决你的问题,请参考以下文章

工作区结构数组输入到 Simulink M 文件 S 函数

simulink中的matlab function函数怎么设置初值?

求助matlab高手帮忙

MATLAB C S-Function不能在simulink实时编译

matlab中simulink开关怎么设置

matlab 画拉普拉斯变换的零极点