北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
2
2004年3月26日星期五
MATLAB 产品应用基础解决工程与科学问题的强大工具
MATLAB 产品应用工程师张威
vzhang@hirain.com
2004年3月26日星期五
3
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? MathWorks公司
?北京九州恒润科技有限公司
? MATLAB产品体系
? MATLAB基本操作
?桌面工具应用
?使用帮助
?基本数据类型
?脚本文件和函数文件
?图形应用基础
?创建图形用户界面
? Simulink基本操作
?创建动态系统
?简单系统
?离散系统
?连续系统
?混合系统
? M语言S函数的编写
2004年3月26日星期五
4
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
MathWorks公司
?总部位于:
z Natick,Massachusetts
?成立于1984年
?员工人数超过1000人,其中1/3
为产品开发人员
?北美办事处:
California,Michigan,
Washington DC,Texas
?欧洲办事处:
UK,France,Germany,
Switzerland,Italy,
Spain,Benelux,Korea
?在21个国家设有代理商
Earth’s topography on an equidistant
cylindrical projection,using the MATLAB
Mapping Toolbox
2004年3月26日星期五
5
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
北京九州恒润科技有限公司介绍
?成立于1998年,现有员工70余人
?北京A级纳税单位
?年销售额、咨询合同额保持两位数增长
?在上海和成都设有办事处
? 2002年成立项目开发部
2004年3月26日星期五
6
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
培训服务基础培训:
MATLAB基础和编程入门
Simulink建立动态系统模型
Real-Time Workshop 基础
Stateflow 建模技术基础中级培训:
MATLAB外部接口编程
MATLAB高级编程技巧
MATLAB图形用户界面
Simulink高级建模技术
Stateflow高级建模技术
…….
高级培训:
根据客户特定需要定制
2004年3月26日星期五
7
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
咨询服务
?咨询服务领域
z系统仿真
z控制系统设计
z射频仿真
z驱动与执行机构
z信号处理与通讯
z集成测试
?先进的技术手段
?有效的项目管理
2004年3月26日星期五
8
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
与我们联系
?公司总部
z地址:北京市西城区北三环中路27号商房大厦430室
z邮编:100029
z电话:010-82011456
z传真:010-62073600
?上海办事处
z地址:上海市徐汇区漕宝路70号光大会展中心D座505室
z邮编:200235
z电话:021-64325413/5/6
z传真:021-64325144
?成都办事处
z地址:成都市人民南路一段86号城市之心大厦23楼N座
z邮编:610016
z电话:028-86203381/2/3
z传真:028-86203381
2004年3月26日星期五
9
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? MathWorks公司
?北京九州恒润科技有限公司简介
? MATLAB产品体系
? MATLAB基本操作
?桌面工具应用
?使用帮助
?基本数据类型
?脚本文件和函数文件
?图形应用基础
?创建图形用户界面
2004年3月26日星期五
10
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
Toolboxes
MATLAB产品体系大量支持建模、分析、计算应用的工具箱
Curve Fitting
Statistics
Signal Processing
Bioinformatics
Neural Networks
Wavelet
Compiler
Finance
Optimization
Symbolic Math
Spline
Control System
Image Processing
Filter Design
Fuzzy Logic
…………
MATLAB:基本数学计算、编程环境(M语言)、数据可视化、GUIDE,
所有MATLAB产品的基础
2004年3月26日星期五
11
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
MATLAB产品体系
DAQ cards
Instruments
Databases and files
Financial Datafeeds
Frame Grabber
Desktop Applications
Automated Reports
■数据IO的工具箱扩展MATLAB的能力,直接获取现场的测试测量数据
■ MATLAB开发工具发布算法和应用程序,例如通过文档报告、Web服务或者独立可执行的应用程序
Data Acquisition
Instrument Control
Image Acquisition
Database
MATLAB Compiler
Report Generator
Web Server
Run-Time Server
2004年3月26日星期五
12
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
Stateflow
MATLAB产品体系
Blocksets
■ Simulink
复杂动态系统建模、仿真、分析的可视化开发平台
■ Stateflow
基于有限状态机理论对事件驱动模型进行建模与仿真的可视化开发环境
■ Blocksets
扩展Simulink功能的模块库:定点系统、DSP/Comm等等
Stateflow
Dials & Gauges
Nonlinear Control Design
Fixed-Point
SimPowerSystem
SimMechanics
Communications
2004年3月26日星期五
13
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
Blocksets
MATLAB产品体系
Code Generation
■自动代码生成完成快速原型仿真、硬件在回路仿真和嵌入式产品级代码开发
■ Real-Time 系统基于PC的快速原型和硬件在回路仿真开发环境
?嵌入式系统目标完成产品原型开发,加快设计流程
real-time systems
StateflowStateflow
Real-Time Workshop
Stateflow Coder
RTW Embedded Coder
xPC Target
Real-Time Windows Target
Embedded Target……
2004年3月26日星期五
14
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
MATLAB产品体系
Code Generation
Blocksets
主要应用:
?科学计算、数据分析与可视化
?系统建模与仿真
?实时嵌入式系统开发与实现
real-time systems
StateflowStateflow
Toolboxes
DAQ cards
Instruments
Databases and files
Financial Datafeeds
Frame Grabber
Desktop Applications
Automated Reports
2004年3月26日星期五
15
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
MATLAB主要应用领域财经金融航空航天和国防信号处理和通讯汽车政府机关动力和船舶教育
2004年3月26日星期五
16
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
软件系统的特点
?软件的主要特点:
z基于矩阵的数值计算
z高级的编程语言
z图形与可视化
z面向应用的工具箱
?开放和可扩展的系统结构
?系统接口
z可扩展的数据I/O功能
z通过MATLAB调用用户
C,Fortran代码
?支持PC/UNIX
2004年3月26日星期五
17
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? MathWorks公司
?北京九州恒润科技有限公司简介
? MATLAB产品体系
? MATLAB基本操作
?桌面工具应用
?使用帮助
?基本数据类型
?脚本文件和函数文件
?图形应用基础
?创建图形用户界面
2004年3月26日星期五
18
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
What is MATLAB?
以矩阵为基本运算单元的高级工程软件工具集:
数据分析工具集成编程环境高级图形可视化建模和算法开发
GUI 开发工具
2004年3月26日星期五
19
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
开始使用MATLAB
2004年3月26日星期五
20
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
数组下标/索引
1
2
3
4
5
1 2 3 4 5
A =
A(3,1)
A(3)
A(1:5,5)
A(:,5)
A(21:25)
A(4:5,2:3)
A([9 14;10 15])
用括号() 指明索引
冒号操作符(:) 确定范围/ 全部
[ ] 通过索引下标创建矩阵
‘end’确定最大的索引值
A(1:end,end)
A(:,end)
A(21:end)’
>> first_mat
4101 6 2
81.29 4 25
7.2 5 7 1 11
00.54 5 56
23 83 13 0 10
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
510152025
2004年3月26日星期五
21
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
MATLAB桌面的组成
2004年3月26日星期五
22
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
MATLAB 帮助功能
?如何知道下列函数的语法?
z COS,ACOS,EXP,SIN,ASIN
?为了得到MATLAB 所使用函数的类型,可以用下列命令:
z help function_name
z helpwin function_name
z doc function_name
2004年3月26日星期五
23
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
通过开始菜单访问帮助文档
2004年3月26日星期五
24
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
帮助信息浏览
? Contents(内容)—由树型图浏览主题
? Index(索引)—由关键字查找主题
? Search(搜索)—搜索文档,4个搜索变量:
z Full Text(全文搜索)—对关键字全文匹配搜索
z Document Titles(文档主题)—仅匹配文档的主题部分内容
z Function Name(函数名称)—参见函数描述相关部分
z Online Knowledge Base(在线信息库)—搜索互联网上的技术支持信息库的内容
z Demos(演示)—查看并运行产品演示例子内容索引搜索演示
2004年3月26日星期五
25
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? MathWorks公司
?北京九州恒润科技有限公司简介
? MATLAB产品体系
? MATLAB基本操作
?桌面工具应用
?使用帮助
?基本数据类型
?脚本文件和函数文件
?图形应用基础
?创建图形用户界面
2004年3月26日星期五
26
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
MATLAB的数据类型
Array
[full or sparse]
logical
char
numeric cell
structure function
handle
java classes
user classes
int8,uint8,
int16,uint16,
int32,uint32,
int64,uint64
single double
2004年3月26日星期五
27
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
数据类型
MATLAB 数据类型:
双精度数组逻辑数组元胞数组结构(结构数组)
字符串数组数值数组可以是实型或复型,满阵或稀疏矩阵
>> help datatypes
>> doc datatypes
2004年3月26日星期五
28
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? MathWorks公司
?北京九州恒润科技有限公司简介
? MATLAB产品体系
? MATLAB基本操作
?桌面工具应用
?使用帮助
?基本数据类型
?脚本文件和函数文件
?图形应用基础
?创建图形用户界面
2004年3月26日星期五
29
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
MATLAB 编辑器/调试器
>> edit %打开新的文件或激活编辑窗口
>> edit <filename> %打开名为<filename>的文件
>> edit ccexamp %打开ccexamp.m文件(如上所示)
2004年3月26日星期五
30
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
脚本M-文件
?标准的ASCII文本文件
?包含一系列MATLAB表达式
(如同在命令行输入的一样)
?命令按顺序解释执行
% 以“%”符号开始表示注释
pause %暂停执行-按任意键继续
keyboard % 暂停并将控制交给命令行
% 输入“回车”继续
break % 终止执行当前循环/文件
return % 返回当前函数/命令行
input % 提示用户输入以符号开始表示注释暂停执行按任意键继续
% 暂停并将控制交给命令行输入回车继续终止执行当前循环文件返回当前函数命令行提示用户输入
2004年3月26日星期五
31
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
示例:脚本M-文件
echo on
a=5;
b=2;
c=a+b
pause
d=c-2
keyboard
e=input('Please enter a numerical value for this variable:')
f=e-a
str=input(‘What is your name? ’,‘s’); % 输入字符串
disp([‘So,your name is ’,str,‘ then.’]); % 显示字符串
break
g=b+c;
echo off
代码行g=b+c,会在break 语句后执行吗?
>> scriptexamp
2004年3月26日星期五
32
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
函数
? MATLAB核心(内建)函数
z sin,abs,exp,…
? MATLAB提供的m-文件函数
z mean,std,…
?用户创建的m-文件函数
z无论何时您想到什么好主意您都可以……
?脚本和函数m-文件的差异
z结构语法
z函数工作区,输入和输出
2004年3月26日星期五
33
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
函数M-文件的结构
function y = mymean(x)
%MYMEAN Average or mean value.
% For vectors,MYMEAN(x) returns the mean value.
% For matrices,MYMEAN(x) is a row vector
% containing the mean value of each column.
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
function y = mymean(x)
%MYMEAN Average or mean value.
% For vectors,MYMEAN(x) returns the mean value.
% For matrices,MYMEAN(x) is a row vector
% containing the mean value of each column.
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
关键字:function
函数名(与文件名相同name,m)
输出参数输入参数在线帮助
MATLAB
代码
>> output_value = mymean(input_value)命令行语法
2004年3月26日星期五
34
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
多个输入和输出参数
function [avg,stdev,r] = ourstats(x,tol)
% OURSTATS finds the "average","standard
% deviation",and "rank" of a matrix
[m,n] = size(x);
if m == 1
m = n;
end
avg = sum(x)/m;
stdev = sqrt(sum(x.^2)/m - avg.^2);
s = svd(x);
r = sum(s > tol);
function [avg,stdev,r] = ourstats(x,tol)
% OURSTATS finds the "average","standard
% deviation",and "rank" of a matrix
[m,n] = size(x);
if m == 1
m = n;
end
avg = sum(x)/m;
stdev = sqrt(sum(x.^2)/m - avg.^2);
s = svd(x);
r = sum(s > tol);
多个输入参数(,)
多个输出参数[,]
>> [a,s,rank] = ourstats(1:99,0.1);
2004年3月26日星期五
35
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
示例:子函数
function [totalsum,average] = stats(input_vector)
% STATS - calculates cumulative total & average
totalsum = sum(input_vector);
average = ourmean(input_vector); %Call to
subfunction
function y = ourmean(x)
% OURMEAN - calculates average
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
function [totalsum,average] = stats(input_vector)
% STATS - calculates cumulative total & average
totalsum = sum(input_vector);
average = ourmean(input_vector); %Call to
subfunction
function y = ourmean(x)
% OURMEAN - calculates average
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
>> [tsum,avg] = stats(rand(1,50))
主函数子函数
2004年3月26日星期五
36
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
MATLAB调用优先级高变量内建函数子函数用户函数文件
Mex-文件
P-文件
M-文件低
>> cos='This string.';
>> cos(8)
ans =
r
>> clear cos
>> cos(8)
ans =
-0.1455
>> cos='This string.';
>> cos(8)
ans =
r
>> clear cos
>> cos(8)
ans =
-0.1455
2004年3月26日星期五
37
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? MathWorks公司
?北京九州恒润科技有限公司
? MATLAB产品体系
? MATLAB基本操作
?桌面工具应用
?使用帮助
?基本数据类型
?脚本文件和函数文件
?图形应用基础
?创建图形用户界面
2004年3月26日星期五
38
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
?确定x轴和/或y轴数据
?确定颜色、线型和标识符号
(如果未指定‘clm’,采用默认值)
?语法:
z绘制一条曲线:
z绘制多条曲线:
plot(xdata,ydata,'color_linestyle_marker')
2-D 绘图
plot(x1,y1,'clm1',x2,y2,'clm2',...)
2004年3月26日星期五
39
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
创建一条蓝色正弦波曲线
>> x = 0:.1:2*pi;
>> y = sin(x);
>> plot(x,y)
>> x = 0:.1:2*pi;
>> y = sin(x);
>> plot(x,y)
>> plot_2d
2004年3月26日星期五
40
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
添加网格
? GRID ON 命令在当前图形中添加网格
? GRID OFF 命令关闭当前图形网格
? GRID 命令在网格状态间切换
>> grid on
2004年3月26日星期五
41
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
在图形中增加其他曲线
? HOLD ON 锁定当前的图形
? HOLD OFF 释放当前图形
? HOLD 在锁定状态间切换
>> addgraph
>> x = 0:.1:2*pi;
>> y = sin(x);
>> plot(x,y)
>> grid on
>> hold on
>> plot(x,exp(-x),'r:*')
>> x = 0:.1:2*pi;
>> y = sin(x);
>> plot(x,y)
>> grid on
>> hold on
>> plot(x,exp(-x),'r:*')
2004年3月26日星期五
42
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
图形标注
>> annotation
>> title('2-D Plots')
>> xlabel('Time')
>> ylabel('Sin(t)')
>> text(pi/3,sin(pi/3),...
'<--Sin(\pi/3)')
>> legend('Sine Wave',...
'Decaying Exponential')
>> title('2-D Plots')
>> xlabel('Time')
>> ylabel('Sin(t)')
>> text(pi/3,sin(pi/3),...
'<--Sin(\pi/3)')
>> legend('Sine Wave',...
'Decaying Exponential')
2004年3月26日星期五
43
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
特殊图形标注(TeX)
?上标和下标:
super
and
sub
?字体:
Some boldface and some italics
?希腊字符:
y = e
αx
sin(βx)
?对{}里面的注释内容有效,直至被修改或删除( \rm )
>> latex_examp
>> text(3.5,20,'y = e^{\alphax}sin(\betax)')
>> text(3.5,20,'y = e^{\alphax}sin(\betax)')
>> ylabel('Some \bfboldface\rm and some \it{italics}')
>> ylabel('Some \bfboldface\rm and some \it{italics}')
>> xlabel('^{super} and _{sub}')
>> xlabel('^{super} and _{sub}')
参考:Special characters using LaTeX
2004年3月26日星期五
44
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
3-D 曲线绘图参考,Color,Linestyle,Marker options
>> z = 0:0.1:40;
>> x = cos(z);
>> y = sin(z);
>> plot3(x,y,z)
>> z = 0:0.1:40;
>> x = cos(z);
>> y = sin(z);
>> plot3(x,y,z)
plot3(xdata,ydata,zdata,'clm',...)
>> plot_3d
2004年3月26日星期五
45
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
3-D 曲面绘图
>> surf_3d
2004年3月26日星期五
46
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
专用绘图语句
>> spec_plots
2004年3月26日星期五
47
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
专用绘图语句(续)
>> spec_plots2
2004年3月26日星期五
48
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
子图
SUBPLOT-在同一图形窗口中显示多个图形
>> subplotex
subplot(#rows,#cols,index)
>> subplot(2,2,1);
>> plot(1:10)
>> subplot(2,2,2)
>> x = 0:.1:2*pi;
>> plot(x,sin(x))
>> subplot(2,2,3)
>> x = 0:.1:2*pi;
>> plot(x,exp(-
x),'r')
>> subplot(2,2,4)
>> plot(peaks)
>> subplot(2,2,1);
>> plot(1:10)
>> subplot(2,2,2)
>> x = 0:.1:2*pi;
>> plot(x,sin(x))
>> subplot(2,2,3)
>> x = 0:.1:2*pi;
>> plot(x,exp(-
x),'r')
>> subplot(2,2,4)
>> plot(peaks)
2004年3月26日星期五
49
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
子图的使用
>>usingsubplots
2004年3月26日星期五
50
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? MathWorks公司
?北京九州恒润科技有限公司简介
? MATLAB产品体系
? MATLAB基本操作
?桌面工具应用
?使用帮助
?基本数据类型
?脚本文件和函数文件
?图形应用基础
?创建图形用户界面
2004年3月26日星期五
51
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
句柄图形(Handle Graphics)入门
? MATLAB图形是由对象(objects)组成的
?每个图形对象都有唯一一个句柄(handle)和一套定义其外观的属性(properties)
?对象按层次(hierarchy)排布
Root (screen)
Figure
Axes Uicontrol Uimenu Uicontextmenu
Image Light Line Patch Rectangle Surface Text
2004年3月26日星期五
52
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
Root
对象
Figure
对象
Axes 对象
UIControl
对象
UIMenu
对象图形对象的层次
Surface
对象
Line
对象
Text
对象
2004年3月26日星期五
53
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
GUI 示例(最终结果)
2004年3月26日星期五
54
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
打开GUIDE
2004年3月26日星期五
55
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
GUIDE 工具
GUIDE 工具栏控件板对齐工具菜单编辑器
M-文件编辑器属性查看器对象浏览器激活图形
2004年3月26日星期五
56
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
激活并测试
1 激活图形
2 测试GUI的回调函数
3 修改
4 完成后保存
>> gui_soln
2004年3月26日星期五
57
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
编写回调函数回调函数是若干条语句(commands),在图形对象被激活时执行回调函数的内容:
回调函数的编写包括以下两步:
?获得(get)发出动作的对象的句柄
(这将会修改对象的属性)
hObject –激活回调对象的句柄
?设置(set)相关对象的属性,以产生相应动作北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
58
2004年3月26日星期五休息北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
59
2004年3月26日星期五
Simulink产品应用基础解决工程与科学问题的强大工具
MATLAB 产品应用工程师张威
vzhang@hirain.com
2004年3月26日星期五
60
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? Simulink基本操作
?创建动态系统
?简单系统
?离散系统
?连续系统
?混合系统
? M语言S函数的编写
2004年3月26日星期五
61
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
Simulink 基础
?用一些块组成的图形界面代表系统
?使用一计算引擎,通过时间步长步进系统
z信号传递
z块的输出计算
?使用MATLAB 工作区参数
?与MATLAB 工作区有接口,可交换系统的输入、输出数据
2004年3月26日星期五
62
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
启动Simulink
2004年3月26日星期五
63
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
使用模块库库块块描述块查找
2004年3月26日星期五
64
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
收集和连接所需各块用拖放操作收集模块使用鼠标左键连接模块
2004年3月26日星期五
65
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
仿真运行
?点击PLAY 按钮运行框图仿真
?双击示波器观察结果
2004年3月26日星期五
66
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
创建子系统
?选择要封装的区域(左键在背景区域上拖放)
?在Edit菜单下选择:“Create Subsystem”
2004年3月26日星期五
67
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
输入和输出
?使信号可以在子系统和父系统之间传递
?输入和输出模块的名字反映在子系统上
?顺序标号
2004年3月26日星期五
68
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
来自工作区的参数
? Simulink 能够使用MATLAB 的工作区
?模块参数可以是来自MATLAB 工作区
? Simulink可以使用MATLAB工作区对表达式赋值
2004年3月26日星期五
69
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
将信号输出到工作区
? Simulink 能够使用
MATLAB 工作区输入/输出数据.
?使用“To Workspace”模块,
?当仿真暂停或终止时输出将被写到工作区中.
?可以保存为结构(包括时间) 或数组
? >> outwork
2004年3月26日星期五
70
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
处理大型模型
?要自顶向下的建立具有复杂层次结构的模型,最好从空的‘Subsystem’模块开始.
?处理一个复杂模型,可借助于模型浏览器.
? >> sf_car
2004年3月26日星期五
71
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? Simulink基本操作
?创建动态系统
?简单系统
?离散系统
?连续系统
?混合系统
? M语言S函数的编写
2004年3月26日星期五
72
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
简单系统
?不存在状态量的系统,也就是
z某一时刻的输出直接且唯一依赖于该时刻的输入量
z系统对同一种输入的响应不会因时间变化而变化
?系统表达为
z代数方程
z逻辑结构
2u if t>5
?例如,y=
10u if t<=5
2004年3月26日星期五
73
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
简单系统建模
?利用MATH 库的模块表示代数关系
?利用MATH库的模块表达逻辑关系
?利用NONLINEAR库的开关和限幅模块
?用于表达一般结构的其它模块库
>> simple
2004年3月26日星期五
74
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
简单系统的运行
?使用Simulation--> Simulation Parameters 对话框来设定仿真起止时间波形不光滑!
2004年3月26日星期五
75
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
?若Max Step Size是‘auto’,
Simulink 自动使用如下值
?强制使用小步长
?分辨率会更好!
设置步长
50
tt
h
startstop
=
2004年3月26日星期五
76
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? Simulink基本操作
?创建动态系统
?简单系统
?离散系统
?连续系统
?混合系统
? M语言S函数的编写
2004年3月26日星期五
77
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
离散系统
?系统每经过一个固定时间间隔才“更新”一次
z固定的时间间隔称为“采样时间”
?输出量依赖于当前输入量和以往的输入、输出量
y(n)=u(n)+u(n-1)+3y(n-1)
time=n x sampling time
?离散动态系统具有离散的状态
z前一个输出的量称为“状态”
z一个离散的状态就是一个储存上一个信号值的存储器!
2004年3月26日星期五
78
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
离散模块库
?零阶保持
z使一个连续信号离散化
z设定采样时间
?单位延迟
z把输入信号延迟一个采样时间
z指定初始值
z建立离散系统的模块
2004年3月26日星期五
79
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
差分方程的实现
?确定需要使用多少个单位延迟模块:
z对上一个例子而言,以下两点是必需的:
1,一点是y(n-1) 来自于y(n),
2,另外一点是u(n-1) 来自于u(n)
?以单位延迟模块开头,把它的输入输出分别标志为(y(n),
y(n-1),u(n),u(n-1)) 并建立代数关系
?设置初始状态
?设置采样时间
2004年3月26日星期五
80
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
离散求解器
? Simulink 通过在系统(框图)和求解器之间建立对话的方式对系统进行求解
?求解器计算模块输出
z更新离散状态(精确量)
z确定下一个步长的值
? Simulink 传递必要的信息:
z系统到求解器:参数,方程
z求解器到系统:计算状态,输入和时间
2004年3月26日星期五
81
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
设置参数
?离散求解器(无连续状态)
处理多采样速率系统
?定步长求解器(单一采样周期)
?变步长(非单一的采样周期)
z自动方式例如:2 blocks,ts1=0.4
ts2=0.6,仅在采样点更新数据
z手动方式指定最大步长
2004年3月26日星期五
82
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
示例:人口动态变化
?一年的人口依赖于
z前一年的人口
z人口出生率,r (r=1.05)
z资源,K (K=1e6)
? p(n)=r*p(n-1)*(1-p(n-1)/K)
?人口的初始值是必不可少的!(p(0)=100000)
>>population
2004年3月26日星期五
83
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
线性离散系统
? Z 变换
z保持线性特性
z x(n) --> X(z)
z x(n-1) --> z
-1
X(z)
? y(n)=u(n)+u(n-1)+3y(n-1)
-->Y(z)=U(z)+z
-1
U(z)+3z
-1
Y(z)
-->
滤波器表示:num=[1 1],den=[1 -3]
1
1
z31
z1
)z(U
)z(Y
+
=
2004年3月26日星期五
84
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
Z 域表达式
?滤波:num=[n0 n1 n2],den=[d0 d1]
?传递函数:num=[n0 n1 n2],den=[d0 d1 0]
?零-极点,gain=K,zeros=[z1 z2],poles=[0 p1]
1
10
2
2
1
10
zdd
znznn

+
++
zdzd
nznzn
1
2
0
2
1
1
2
0
+
++
)pz(z
)zz)(zz(
K
1
21

2004年3月26日星期五
85
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? Simulink基本操作
?创建动态系统
?简单系统
?离散系统
?连续系统
?混合系统
? M语言S函数的编写
2004年3月26日星期五
86
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
连续系统
?输出是连续变化的系统
“更新间隔”是无穷小量
?数学表达式中存在输入和输出的导数举例:积分器输出的导数等于输入
?连续系统具有连续的状态
z这些量是在计算输出时所必需的(和输入量一起)
z他们是“无穷小量”记忆单元
uy =
&
2004年3月26日星期五
87
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
Simulink中状态的处理
? Simulink 把动态系统模型转变为“状态表达式”,供求解器使用
z离散系统:
z连续系统:
z混合系统:组合输出方程更新方程
n)u(n),g(x(n),y(n)
n)u(n),(x(n),f1)x(n
d
→=
→=+
输出方程导数方程
)),(),(()(
)),(),(()(
→=
→=
ttutxgty
ttutxftx
c
&
2004年3月26日星期五
88
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
微分方程的实现
?积分器是构成连续系统的基本块确定所需的积分器数目,一个就表示一阶微分
?通过积分器把导数量转变为状态量从而确定系统的状态
?在各个状态之间建立代数关系
?指定积分器中的初始状态
yy→?

&
yyy→→?
∫∫
&&&
2004年3月26日星期五
89
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
示例:蹦极跳(Bungee Jumping)
?您系着一个弹力绳从桥上跳下去!
?连续动力学按下式给出:
?各变量的定义是:x:位置,m:质量,k:绳的弹性常数,a1,a2:空气阻尼系数
xxaxa)x(bmgxm
21
&&&&&
+=

>?
=
0 xif 0
0 xif kx
)x(b
>> bungee
2004年3月26日星期五
90
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
解答:蹦极跳
>> bungee
触地啦!
2004年3月26日星期五
91
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
连续求解器
?求解器的主要功能是计算块的输出
?涉及状态量的计算
?在连续系统中,状态的计算包括对含有导数的方程的积分
?仿真过程中积分是近似的!
?不同的连续求解器使用不同的方法进行近似积分!
z定步长:ode5,ode4,ode3,ode2,ode1
z变步长:ode45,ode23,ode113,ode15s,ode23s,ode23t ode23tb
? ‘s’,‘t’,‘tb’表示用于求解刚性系统的求解器
2004年3月26日星期五
92
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
误差控制
?变步长求解器可以进行误差控制
?绝对误差:积分误差的上限
?相对误差:积分误差与变量本身比值的上限
?求解器只会保证至少满足其中一个条件,而不一定要求同时满足两个
2004年3月26日星期五
93
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
步长计算(变步长算法)
x
t t+h
如果误差是可接受的,则仿真继续进行否则,减小积分步长,重新对该步积分值进行计算,直到满意为止
步长的调整符合离散状态的更新要求离散更新
h
new
2004年3月26日星期五
94
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
步长计算(变步长算法)
x
t t+h
Simulink通过对导数进行数字积分而得到连续状态量通过比较两种不同阶次积分之间的差异来得出近似的积分误差
如果误差是可接受的,则仿真继续进行否则,减小积分步长,重新对该步积分值进行计算,直到满意为止
2004年3月26日星期五
95
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
参数设置
?设置求解器
z变步长误差控制
z合适的求解器
?设置相对误差
?设置绝对误差
31
x
x
< e
的误差
6-1ex <的误差
2004年3月26日星期五
96
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
? Laplace变换
z保持了线性性质
z如果
?弹簧-质量-阻尼系统:
?传递函数:
? Simulink:分子=1,分母=[m b k]
线性连续系统
)()(
)()(
)()(
2
sXstx
ssXtx
sXtx



&&
&
k
b
x(t)
F(t)
m
kxxbxmF ++=
&&&
kbsms
1
)s(F
)s(X
2
++
=
2004年3月26日星期五
97
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
线性连续系统
?时域表达式
?弹簧-质量-阻尼:
DuCxy
BuAxx
+=
+=
&
122
21
2
1
x
m
k
x
m
b
m
F
x
xx
xx
xx
=
=
=
=
&
&
&
[] xF0
x
x
01y
F
0
x
x
10
x
x
2
1
2
1
2
1
m
1
m
b
m
k
+
=
+
=

&
&
2004年3月26日星期五
98
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? Simulink基本操作
?创建动态系统
?简单系统
?离散系统
?连续系统
?混合系统
? M语言S函数的编写
2004年3月26日星期五
99
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
混合系统
?使用变步长连续求解器仿真混合系统
?步长应调整在误差容限以内并且与离散状态更新相匹配
?对于多速率系统,可以使用“Sample Time
Colors”
2004年3月26日星期五
100
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
示例:行驶控制系统
>> cruisesystem,cruisesystem2
2004年3月26日星期五
101
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? Simulink基本操作
?创建动态系统
?简单系统
?离散系统
?连续系统
?混合系统
? M语言S函数的编写
2004年3月26日星期五
102
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
S-函数,Definition
?,系统”函数
?一个对求解器发出的命令做出响应的函数
?采用非图形化的方法实现一个动态系统
?在Simulink 中加入更多的功能
z M-文件S-函数:图形能力
z C MEX S-函数:与操作系统接口
? S-函数的构造假设它是一个动态系统(“默认”的用法)
?其它S-函数的用法(比如用于显示目的) 是默认用法的特例
2004年3月26日星期五
103
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
计算输出更新离散状态计算输出计算导数结束时需要进行的任何工作计算下一个采样时间点
(仅适用于变采样时间块)
设置初始条件
Integration
phase
Flag = 0
mdlInitializeConditions
mdlInitializeSizes
mdlInitializeSampleTimes
Flag = 4
mdlGetTimeNextVarHit
Flag = 3
mdlOutputs
Flag = 3
mdlOutputs
Flag = 2
mdlUpdate
Flag = 1
mdlDerivatives
Flag = 9
mdlTerminate
S-函数的控制流
2004年3月26日星期五
104
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
M-文件S-函数模板
?使用sfuntmpl.m
?主函数:采用SWITCH-CASE 基于标志的结构,引导Simulink 到正确的子函数
?子函数:
z mdlInitialize:提供状态,输入,输出,采样时间数目和初始状态的值
z mdlDerivatives:给定t,x,u,计算连续状态的导数
z mdlUpdate:给定t,x,u,计算离散状态的更新
z mdlOutputs,给定t,x,u,计算输出
>>edit sfuntmpl
2004年3月26日星期五
105
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
M-文件S-函数初始化
?在开始前,考虑以下问题在开始前,考虑以下问题::
z有多少个连续状态?
z有多少个离散状态?
z有多少个输入?
z有多少个输出?
z这个S-函数带有direct feedthrough吗?
z这个S-函数包含多少个采样?
2004年3月26日星期五
106
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
状态方程简介
? mdlUpdate
z sys=f
d
(x,u,t)
? mdlDerivatives
z sys=fc(x,u,t)
? mdlOutput
z sys=g(x,u,t)
)t,u,x(g)t(y
)t,u,x(f)t(x
)t),k(u),k(x(f)1k(x
c
kdd
=
=
=+
&
Simulink 利用状态方程的表达!!
2004年3月26日星期五
107
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
带参数的简单系统
?修改主函数
?修改相应的子函数额外的参数
2004年3月26日星期五
108
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
离散系统
?状态初始化
?模型更新
2004年3月26日星期五
109
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
连续系统
?状态初始化
?模型导数函数北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
110
2004年3月26日星期五课程总结
MATLAB 产品应用工程师张威
vzhang@hirain.com
2004年3月26日星期五
111
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
内容提要
? MathWorks公司
?北京九州恒润科技有限公司
? MATLAB产品体系
? MATLAB基本操作
?桌面工具应用
?使用帮助
?基本数据类型
?脚本文件和函数文件
?图形应用基础
?创建图形用户界面
? Simulink基本操作
?创建动态系统
?简单系统
?离散系统
?连续系统
?混合系统
? M语言S函数的编写
2004年3月26日星期五
112
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
培训服务基础培训:
MATLAB基础和编程入门
Simulink建立动态系统模型
Real-Time Workshop 基础
Stateflow 建模技术基础中级培训:
MATLAB外部接口编程
MATLAB高级编程技巧
MATLAB图形用户界面
Simulink高级建模技术
Stateflow高级建模技术
…….
高级培训:
根据客户特定需要定制
2004年3月26日星期五
113
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
网上资源
http://www.hirain.com
2004年3月26日星期五
114
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
技术论坛
http://www.hirain.com/forum
2004年3月26日星期五
115
北京九州恒润科技有限公司
ww
w.h
ir
ai
n.c
om
200
4?
与我们联系
?公司总部
z地址:北京市西城区北三环中路27号商房大厦430室
z邮编:100029
z电话:010-82011456
z传真:010-62073600
?上海办事处
z地址:上海市徐汇区漕宝路70号光大会展中心D座505室
z邮编:200235
z电话:021-64325413/5/6
z传真:021-64325144
?成都办事处
z地址:成都市人民南路一段86号城市之心大厦23楼N座
z邮编:610016
z电话:028-86203381/2/3
z传真:028-86203381