概述
做毕设时要通过判断一个输入量的大小来改变一个二阶系统的输入信号的频率,我就随便弄个正弦信号尝试,但是总说未定义变量f,求大神们帮助
程序如下
function [sys,x0,str,ts] =aaa(t,x,u,flag)
% 正弦波信号源
global f;
switch flag
case 0 % flag=0 初始化
[sys,x0,str,ts]=mdlInitializeSizes;
case {1, 2,3, 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 = 0; % 输出信号数目是0
sizes.NumInputs = 1; % 输入信号数目是1
sizes.DirFeedthrough = 0; % 该系统不是直通的
sizes.NumSampleTimes = 1; % 这里必须为1
sys = simsizes(sizes);
str = []; % 通常为空矩阵
x0 = []; % 初始状态矩阵x0 (零状态情况)
ts = [-1 0]; % 表示连续取样时间的仿真
% 初始化函数结束
% 子函数实现(2)系统输出方程函数-----------------------------
function ceshi(u)
global f;
if u>2
f=5;
set_param('ceshi/Sine Wave','Amplitude',num2str(f))
end
if u<2
f=10;
set_param('ceshi/Sine Wave','Amplitude',num2str(f))
end
1526109082(1).jpg
(46.27 KB, 下载次数: 1)
2018-5-12 15:14 上传
模块
1526109291(1).jpg
(80.31 KB, 下载次数: 0)
2018-5-12 15:14 上传
将模块频率用f表示
1526109320(1).jpg
(79.5 KB, 下载次数: 0)
2018-5-12 15:14 上传
错误
最后
以上就是清秀美女为你收集整理的matlab给s-function改,通过s-function改变模块参数的全部内容,希望文章能够帮你解决matlab给s-function改,通过s-function改变模块参数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复