建网站费用 优帮云,桂林昨晚发生的新闻,深圳工信部网站备案信息查询,厦门物流网站建设目录 一. 引言二. 普通Matlab function使用全局变量三. Simulink中的Matlab function使用全局变量四. 如何利用Matlab function的全局变量施加随机噪声 一. 引言
最近发现了之前仿真中的一个问题#xff0c;记录一下备忘。
Matlab function中有时候需要用到全局变量#xf… 目录 一. 引言二. 普通Matlab function使用全局变量三. Simulink中的Matlab function使用全局变量四. 如何利用Matlab function的全局变量施加随机噪声 一. 引言
最近发现了之前仿真中的一个问题记录一下备忘。
Matlab function中有时候需要用到全局变量其用法较为简单而Simulink中的Matlab function全局变量用法稍复杂一点按照步骤来即可但第一次用还是需要一个详细教程以免出错。
二. 普通Matlab function使用全局变量
普通Matlab function全局变量定义
function W weight(m)
global GG;
W m * GG;将上述代码保存成文件weight.m.
注意调用的时候也要声明全局变量
global GG;
GG 10;
a weight(4)三. Simulink中的Matlab function使用全局变量
详细的多种用法参考这篇文章: Simulink高级应用—— Matlab Function中共享或使用全局变量或全局数据
这里只说其中一种用法使用data sotre memory来实现全局变量共享。
比如我这里要给控制器输出端加一个噪音信号用Matlab function就可以定义为时间的函数。 1. MATLAB Function的代码中 声明全局变量
考虑最简单的情况t5s时加一个幅值为noise_amp的噪音定义
function y fcn(t)
global noise_amp;
if t 5y noise_amp;
else y 0;
end2. MATLAB Function 注册全局变量
在MATLAB Function的代码编辑界面点击Edit Data 点击Add Data成功添加一个变量命名为noise_amp与代码中的必须一致。变量类型由input改为data store memory 3. Simulink中添加 Data Store Memory模块
从library中拖入或直接在空白页面输入Data Store Memory添加一个Data Store Memory模块。命名与Matlab function中一致必须设置好明确的数据类型不能为auto比如我设置成double。设置信号的类型real和初始值。我这里设置的初始值0.3即噪音幅值0.3 现在运行一下结果如图所示。可以看到t5s时直接在输出端叠加了一个0.3的噪音之后在PID的调节下回到设置的期望值1。这样就仿真了一个脉冲形式的抗扰控制。 四. 如何利用Matlab function的全局变量施加随机噪声
上面是在某一时刻施加了一个噪音现在我想以10Hz频率给输出端施加随机噪音控制周期为0.001s, 1000Hz应该怎么施加。
这个问题乍一看很简单其实仔细想一想不是那么简单。比如下面这这么写就是错的
function y fcn(t,u)if mod(1000*t,100) 0 % 噪声频率为0.1s给一次, 仿真周期是0.001sy 0.1 * (-12*rand);
elsey 0;
end它仿真出来的是下图形式每一次的噪音只在那一时刻起了作用表现在输出信号上就是一个个的“尖刺”实际上每一次施加的噪音都应该是持续性的所以应该用累加形式。 正确的写法如下新定义了一个全局变量noise步骤参照前面
function y fcn(t, data1)global noise;if mod(1000*t,100) 0 % 噪声频率为0.1s给一次, 仿真周期是0.001sy noise 0.1 * (-12*rand);
elsey noise;
end
noise y;这样子输出就是下面这样的可以看到是连续信号只演示原理控制效果忽略~。