我是靠谱客的博主 清秀美女,最近开发中收集的这篇文章主要介绍matlab给s-function改,通过s-function改变模块参数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

做毕设时要通过判断一个输入量的大小来改变一个二阶系统的输入信号的频率,我就随便弄个正弦信号尝试,但是总说未定义变量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 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

模块

ed912bee46d825b037724861eb5177b0.png

1526109291(1).jpg

(80.31 KB, 下载次数: 0)

2018-5-12 15:14 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

将模块频率用f表示

d3bceca21006701694602f4dd5c4da9f.png

1526109320(1).jpg

(79.5 KB, 下载次数: 0)

2018-5-12 15:14 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

错误

e1153791fd9851fc5a98914790ae9016.png

最后

以上就是清秀美女为你收集整理的matlab给s-function改,通过s-function改变模块参数的全部内容,希望文章能够帮你解决matlab给s-function改,通过s-function改变模块参数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部