[simulink] --- simulink模块(三)

简介: [simulink] --- simulink模块

[simulink] --- simulink模块(二)https://developer.aliyun.com/article/1442547


3.3 查表模块

所谓查表,就是说目标位一个填满数据的向量或矩阵表格,根据对应维数的输入能够在表中定位一个对应的输出。

1-D Lookup Table

Number of table dimensions:设置查找表维数,可以通过下拉框选择14的维数,或者输入130的维数。

Table data:查找把表的数值。

Breakpoints 1:查找表第一维输入向量,必须按照从下到大严格单调递增。

Edit table and breakpoints:按下次按钮可以在表格里编辑查找表输入及内容。

Interpolat:

Flat:使用输入值和相邻两个breakpoint中较小的一个。

Linear:线性插值法。

Cubic spline:三次样条插值方法。

Extrapolation:

Clip:使用breakpoint端点值。

Linear:线性插值法。

Cubic spline:三次样条插值方法。

示例:256长度正弦查找表

3.4 其他常用模块

数学函数模块

随机数模块

随机数模块是一个信号源模块,可以产生正态分布的随机信号

Mean:产生随机数序列的均值。

Variance:产生随机数序列的方差。

Seed:用于产生随机数序列的种子,可以是0或正整数,根据种子可以产生周期性的伪随机数。保持参数不变,可以在多次仿真中保持同样的输出结果。

示例:对带有噪声的正弦信号进行滤波

传递函数模块

传递函数是描述线性系统动态特性的基本数学工具之一,经典控制理论的主要研究方法——频率相应法和根轨迹法都是建立在传递函数的基础之上。

Numerator coefficients:传递函数的分子向量。

Denomibator coefficients:传递函数的分母向量。

3.5 用户自定义模块

用户可以使用M语言或C语言根据Simulink运行原理编写拥有自定义功能的模块。

Fcn

可输入abs、acso、asin、atan、atan2、ceil、cos、cosh、exp、fabs、floor、hypot、ln、log、log10、pow、power、rem、sgn、sin、sinh、sqrt、tan、tanh组合的函数表达式,输入信号用u表示。当输入信号为多维时,从上到下输入信号的每个维的元素一次用u(1)、u(2)、…表示。

MATLAB Function

双击该模块,可以打开一个M代码编辑窗,它支持的MATLAB内建函数比Fun要广泛很多。

根据Simulink运行机制,每个采样点会调用一次MATLAB Function的函数,两次调用之间,同一个变量的两次计算的终值如何传递到当前计算周期是一个问题。

使用persistent变量可以处理这一问题。

function y = fcn(u)
persistent sum_val;
if isempty(sum_val)
    sum_val=0;
end
sum_val=sum_val+u;
y=sum_val;

persistent变量时定义在某个函数内的变量类型,可在函数调用的不同次数间保持上一次退出该函数的值。它同global全局变量的类似之处在于MATLAB为他们创建永久数据区域,不同之处在于它只能被声明它的函数内部识别,目的是免除 此类变量被其他函数或命令修改值而造成用户无法确保其值得困扰。

声明persistent变量时它刚被创建,其内容为空值[ ]。

使用persistent变量需要注意:

persistent变量不能作为函数的输入输出参数,否则会报错。

persistent变量不能同当前工作空间中已经存在的变量同名,否则会报错。

persistent变量不能声明在Command Window中,只能在函数中声明。

示例:自定义3-D绘图函数

function scope_3d(u)
% #codegen
eml.extrinsic('plot3','scatter3','close','delete');
len=length(u);
persistent data;
if isempty(data)
    data=zeros(3,100000);
end
persistent n;
if isempty(n)
    n=1;
else
    n=n+1;
end
data(:,n)=u;
persistent h;
if isempty(h)
    h=plot3(data(1,1:n),data(2,1:n),data(3,1:n),'o');
else
    delete(h);
    h=plot3(data(1,1:n),data(2,1:n),data(3,1:n),'o');
end

S函数


相关文章
|
算法
专题九Simulink仿真基础-1
专题九Simulink仿真基础
137 1
[simulink] --- 数据字典(下)
[simulink] --- 数据字典(下)
399 0
|
存储
[simulink] --- simulink模块(三)
[simulink] --- simulink模块(三)
382 0
|
安全 算法 C++
专题九Simulink仿真基础-2
专题九Simulink仿真基础
138 1
[simulink] --- simulink辅助技巧
[simulink] --- simulink辅助技巧
145 1
[simulink] --- simulink信号
[simulink] --- simulink信号
159 0
|
7月前
|
存储 缓存
[simulink] --- simulink模块(一)
[simulink] --- simulink模块
508 0
|
7月前
|
存储
[simulink] --- simulink模块(二)
[simulink] --- simulink模块
318 0
|
7月前
[simulink] --- simulink中stateflow的使用
[simulink] --- simulink中stateflow的使用
160 0