Professional Documents
Culture Documents
١
ﺗﻮﺍﺑﻊ ﺍﺱ
ﺗﺎﺑﻊ ﺍﺱ ﭼﻴﺴﺖ؟
ﺗﻮﺍﺑﻊ ﺍﺱ ﺍﻣﮑﺎﻥ ﺗﻌﺮﻳﻒ ﺑﻠﻮﮎ ﺳﻴﻤﻴﻮﻟﻴﻨﮏ ﺳﻔﺎﺭﺷﻲ ﺑﻪ ﮐﻤﮏ ﺑﺮﻧﺎﻣﻪ MATLABﻳﺎ Cﺭﺍ ﻓﺮﺍﻫﻢ ﻣﻲﮐﻨﺪ .ﺍﮔﺮ ﺑﺮﻧﺎﻣﻪ Cﻳـﺎ
MATLABﮐﻪ ﺑﺨﺸﻲ ﺍﺯ ﺳﻴﺴﺘﻢ ﺭﺍ ﻣﺪﻝ ﻣﻲﮐﻨﺪ ﻣﻮﺟـﻮﺩ ﺑﺎﺷـﺪ )ﮐـﻪ ﻧﻤـﺎﻳﺶ ﺁﻥ ﺩﺭ ﺳـﻴﻤﻴﻮﻟﻴﻨﮏ ﺑـﺎ ﺗﺮﮐﻴـﺐ ﻭ ﺳـﻨﺘﺰ
ﺑﻠﻮﮐﻬﺎﻱ Built-inﻣﻮﺟﻮﺩ ،ﻣﻤﮑﻦ ﻧﻤﻲﺑﺎﺷﺪ ﻳﺎ ﺑﻪ ﻋﻠﺖ ﺣﺠﻴﻢ ﺑﻮﺩﻥ ﺣﻮﺻﻠﻪ ﭘﻴﺎﺩﻩﺳﺎﺯﻱ ﺁﻧﺮﺍ ﻧﺪﺍﺭﻳﺪ!( ﻣﻤﮑﻦ ﺍﺳﺖ ﺑﺨﻮﺍﻫﻴﺪ
ﺍﺯ ﻫﻤﻴﻦ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﻣﺪﻝ ﺳﻴﻤﻴﻮﻟﻴﻨﮏ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ .ﻣﺜﻼﹰ ﻣﻲﺧﻮﺍﻫﻴﺪ ﮐﻨﺘﺮﻟﺮ ﺑﺮﺍﻱ ﻣﺪﻟﻲ ﻃﺮﺍﺣﻲ ﮐﻨﻴﺪ ﮐﻪ ﮐﺪﻳﻨﮓ ﺍﻡﻓﺎﻳـﻞ
ﺁﻧﺮﺍ ﺩﺍﺭﻳﺪ MATLAB .ﺗﺎﺑﻊ ﺍﺱ ﺭﺍ ﺑﺮﺍﻱ ﺗﺤﻘﻖ ﺍﻣﻮﺭ ﺫﮐﺮ ﺷﺪﻩ ﺑﻪ ﺷﻤﺎ ﭘﻴﺸﻨﻬﺎﺩ ﻣﻲﮐﻨﺪ .ﺗﺎﺑﻊ ﺍﺱ ﻋـﻼﻭﻩ ﺑـﺮ ﺍﻳﻨﮑـﻪ ﺍﻣﮑـﺎﻥ
ﺗﻌﺎﻣﻞ ﺑﺎ Solverﻣﻌﺎﺩﻻﺕ ﺩﺭ ﺳﻴﻤﻴﻮﻟﻴﻨﮏ ﺭﺍ ﺍﻳﺠﺎﺩ ﻣﻲ ﮐﻨﺪ ،ﺍﺯ ﺟﺎﻣﻌﻴﺖ ﮐﺎﻓﻲ ﺑﺮﺍﻱ ﺳـﺎﺧﺖ ﻣـﺪﻝ ﺳﻴﺴـﺘﻤﻬﺎﻱ ﭘﻴﻮﺳـﺘﻪ،
ﮔﺴﺴﺘﻪ ﻭ ﻫﻴﺒﺮﻳﺪ ﺑﺮﺧﻮﺭﺩﺍﺭ ﺍﺳﺖ.
& Drag ﺑﻠﻮﮎ S-Functionﺭﺍ ﺍﺯ ﺷﺎﺧﻪ User-defined Functionﺩﺭ Simulink Library Browserﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﻩ ﻭ ﺑـﺎ
Dropﺩﺭ ﺩﺭ ﻓﻀﺎﻱ ﺳﻴﻤﻴﻮﻟﻴﻨﮏ ﻗﺮﺍﺭ ﺩﻫﻴﺪ .ﺑﺎ ﺑﺎﺯ ﮐﺮﺩﻥ ﺑﻠﻮﮎ ﻓﻮﻕ ﭘﻨﺠﺮﻩ ﺯﻳﺮ ﻣﺸﺎﻫﺪﻩ ﻣﻲﺷﻮﺩ:
ﺗﺎﺑﻊ ﺍﺱ ﻣﺎﻧﻨﺪ ﺩﻳﮕﺮ ﺗﻮﺍﺑﻊ ﺩﺭ MATLABﺩﺭ M-Fileﻧﻮﺷﺘﻪ ﻣﻲﺷﻮﺩ ﻭ M-Fileﺁﻥ ﺑـﺎ ﻧـﺎﻡ ﺍﻧﺘﺨـﺎﺑﻲ ﺑـﺮﺍﻱ ﺗـﺎﺑﻊ ﺫﺧﻴـﺮﻩ
ﻣﻲﺷﻮﺩ .ﻟﺬﺍ ﻫﺮﮔﺎﻩ ﮐﻪ ﺗﺎﺑﻊ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﻲ ﮐﻨﻴﺪ MATLAB ،ﺩﺭ ﭘﺸﺖ ﺻﺤﻨﻪ M-Fileﻣﺮﺑﻮﻁ ﺑﻪ ﺁﻧﺮﺍ ﺍﺟﺮﺍ ﻣﻲﮐﻨﺪ.
ﺩﺭ ﺑﻠﻮﮎ ﺗﺎﺑﻊ ﺍﺱ ،ﺩﺭ ﻣﺤﻠﻲ ﮐﻪ ﺍﺯ ﺷﻤﺎ ﺧﻮﺍﺳﺘﻪ ﺷﺪﻩ ﻧﺎﻡ ﺗﺎﺑﻊ ﺭﺍ ﻭﺍﺭﺩ ﮐﻨﻴﺪ ،ﻧﺎﻡ M-Fileﺍﻱ ﮐﻪ ﺗﺎﺑﻊ ﺍﺱ ﺭﺍ ﺩﺭ ﺁﻥ ﺫﺧﻴـﺮﻩ
ﮐﺮﺩﻩﺍﻳﺪ ﺑﺪﻭﻥ ﭘﺴﻮﻧﺪ m ٢ﻭﺍﺭﺩ ﻣﻲﮐﻨﻴﺪ.
ﻣﻤﮑﻦ ﺍﺳﺖ ﺗﺎﺑﻊ ﺍﺱ ﺷﻤﺎ ﻧﻴﺎﺯ ﺑﻪ ﭘﺎﺭﺍﻣﺘﺮﻫﺎﻳﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﮐﻪ ﺍﻧﺘﺨﺎﺏ ﺁﻥ ﺑﺮﻋﻬﺪﻩ ﮐـﺎﺭﺑﺮ )ﻳـﺎ( ﻃـﺮﺍﺡ ﺍﺳـﺖ .ﻟﻴﺴـﺖ ﺍﻳـﻦ
ﭘﺎﺭﺍﻣﺘﺮﻫﺎ ﮐﻪ ﺑﺎ " ",ﺍﺯ ﻫﻢ ﺟﺪﺍ ﺷﺪﻩﺍﻧﺪ ﺑﺪﻭﻥ ﺁﻧﮑﻪ ﺩﺭ ﺩﺍﺧﻞ ﺑﺮﺍﮐﺖ ﻗﺮﺍﺭ ﺑﮕﻴﺮﻧﺪ ﺩﺭ ﺑـﺎﮐﺲ S-Function Parametersﻭﺍﺭﺩ
ﻣﻲﺷﻮﻧﺪ.
1
- S - Function
2
- Extension
١
ﺗﺎﺑﻊ ﺍﺱ ﭼﮕﻮﻧﻪ ﮐﺎﺭ ﻣﻲﮐﻨﺪ؟
ﻓﻬﻢ ﻋﻤﻠﮑﺮﺩ ﺗﺎﺑﻊ ﺍﺱ ﻣﺴﺘﻠﺰﻡ ﻓﻬﻢ ﻧﮕﺮﺵ ﺳﻴﻤﻴﻮﻟﻴﻨﮏ ﺩﺭ ﺷﺒﻴﻪ ﺳﺎﺯﻱ ﻳﮏ ﺑﻠﻮﮎ ﺍﺳﺖ ﮐـﻪ ﺧـﻮﺩ ﺗـﺎﺑﻊ ﺩﺭﮎ ﺭﻳﺎﺿـﻴﺎﺕ
ﺣﺎﮐﻢ ﺑﺮ ﺑﻠﻮﮐﻬﺎ ﺍﺳﺖ.
-۱ﺭﻳﺎﺿﻴﺎﺕ ﭘﺸﺘﻴﺒﺎﻥ
ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺩﺭ ﺷﮑﻞ ) (۱ﻣﻼﺣﻈﻪ ﻣﻲﮐﻨﻴﺪ ﻫﺮ ﺑﻠﻮﮎ ﻳﮏ ﻓﻀﺎﻱ ﺣﺎﻟﺖ )ﻭﺭﻭﺩﻱ -ﺣﺎﻟﺖ -ﺧﺮﻭﺟﻲ( ﺍﺳﺖ.
)(۱
ﮐﻪ ﺍﺯ ﺩﻭ ﺑﺨﺶ ﺗﺸﮑﻴﻞ ﺷﺪﻩ ﺍﺳﺖ:
-١ﺩﻳﻨﺎﻣﻴﮏ ﻓﻀﺎﻱ ﺣﺎﻟﺖ ﮐﻪ ﺷﺎﻣﻞ ﻣﻌﺎﺩﻻﺕ ﺩﻳﻔﺮﺍﻧﺴﻴﻞ ﻭ ﺩﻳﻔﺮﻧﺲ ﺍﺳﺖ.
-٢ﺟﺒﺮ ﻓﻀﺎﻱ ﺣﺎﻟﺖ ﮐﻪ ﺑﻴﺎﻧﮕﺮ ﺭﺍﺑﻄﻪ ﺣﺎﻻﺕ ،ﻭﺭﻭﺩﻳﻬﺎ ﻭ ﺧﺮﻭﺟﻴﻬﺎﺳﺖ:
٢
-۲ﻣﺮﺍﺣﻞ ﺷﺒﻴﻪﺳﺎﺯﻱ
ﺷﮑﻞ )(۲
٣
flag=0 -۱
ﺑﺎ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺗﺎﺑﻊ ﺍﺱ ﺑﺎ flag=0ﺗـﺎﺑﻊ mdlInitializeSizesﺻـﺪﺍ ﺯﺩﻩ ﺷـﺪﻩ ﻭ ﺧﺮﻭﺟـﻲ ﺁﻥ ﺑـﻪ ][sys,x0,str,ts
ﻧﺴﺒﺖ ﺩﺍﺩﻩ ﻣﻲﺷﻮﺩ .ﺗﻌﺮﻳﻒ ﺗﺎﺑﻊ mdlInitializeSizesﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ:
function [sys,x0,str,ts]=mdlInitializeSizes
;sizes = simsizes
; ?= sizes.NumContStates
; ?= sizes.NumDiscStates
;?= sizes.NumOutputs
;?= sizes.NumInputs
; ?= sizes.DirFeedthrough
;?= sizes.NumSampleTimes
;)sys = simsizes(sizes
;? = x0
;][ = str
;]ts = [0 0
ﺗﺎﺑﻊ mdlInitializeSizesﺁﺭﮔﻮﻣﺎﻥ ﻭﺭﻭﺩﻱ ﻧﺪﺍﺭﺩ ﻭ ﺍﺯ ﺁﺭﮔﻮﻣﺎﻧﻬﺎﻱ ﻭﺭﻭﺩﻱ ﺗﺎﺑﻊ ﺍﺱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﮐﻨﺪ .ﺩﺭ ﮔﺎﻡ ﻧﺨﺴـﺖ،
ﺳﺎﺧﺘﺎﺭ sizesﺑﺎ ﮐﻤﮏ ﺗﺎﺑﻊ simsizes Built-inﺳﻴﻤﻴﻮﻟﻴﻨﮏ ﺳﺎﺧﺘﻪ ﻣﻲﺷﻮﺩ .ﺍﮔﺮ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﺊ ﮔﺮﺍ ﻣـﺄﻧﻮﺱ
ﺑﺎﺷﻴﺪ ﻣﻲﺩﺍﻧﻴﺪ ﮐﻪ ﺳﺎﺧﺘﺎﺭﻫﺎ ،١ﮐﻼﺳﻬﺎﻳﻲ ﻫﺴﺘﻨﺪ ﮐﻪ ﺗﻨﻬﺎ Attributeﺩﺍﺭﻧﺪ ﻭ ﺑﺮﺍﻱ ﺩﺳﺘﺮﺳﻲ ﻭ ﻣﻘـﺪﺍﺭ ﺩﻫـﻲ ﺑـﻪ ﺍﻋﻀـﺎ
ﺁﻧﻬﺎ ﺍﺯ ﺍﻟﮕﻮﻱ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ:
structurename.attribute1
)structurename ® attribute1 (if attribute1 is e pinter
ﭘﺲ ﺍﺯ ﺍﻳﺠﺎﺩ sizesﺗﻤﺎﻣﻲ ﺍﻋﻀﺎﻱ ﺁﻥ ﺑﺎﻳﺴﺘﻲ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﺷﻮﻧﺪ .ﺩﺭ ﺟﺪﻭﻝ ) (۴ﻟﻴﺴﺖ ﺍﻋﻀـﺎﻱ sizesﻭ ﺗﻌـﺎﺭﻳﻒ ﺁﻧﻬـﺎ
ﺁﻣﺪﻩ ﺍﺳﺖ.
ﺗﻮﺟﻪ :ﺍﮔﺮ ﺳﺎﻳﺰ ﻭﺭﻭﺩﻱ ﺍﺯ ﭘﻴﺶ ﻣﻌﻠـﻮﻡ ﻧﻴﺴـﺖ )ﺑﺼـﻮﺭﺕ ﺩﻳﻨـﺎﻣﻴﮑﻲ ﻭ ﺩﺭ ﺣـﻴﻦ ﺷـﺒﻴﻪﺳـﺎﺯﻱ ﻣﺸـﺨﺺ ﻣـﻲﺷـﻮﺩ( ﻟـﺬﺍ
sizes.NumInputs =-1ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﮐﻨﻴﺪ .ﻫﺮﮐﺪﺍﻡ ﺍﺯ:
sizes.NumContStates
sizes.NumDiscStates
sizes.NumOutputs
ﮐﻪ ﻭﺍﺑﺴﺘﻪ ﺑﻪ ﻭﺭﻭﺩﻱ ﻣﻲﺑﺎﺷﻨﺪ ﺑﺎﻳﺪ ﺑﻪ ﻫﻤﻴﻦ ﺗﺮﺗﻴﺐ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﺷﻮﻧﺪ.
ﭘﺲ ﺍﺯ ﺗﻌﺮﻳﻒ ﺳﺎﺧﺘﺎﺭ ، sizesﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳﺘﻮﺭ:
;)sys = simsizes(sizes
ﺳﺎﺧﺘﺎﺭ sizesﺑﻪ ﺑﺮﺩﺍﺭ ﺳﻄﺮﻱ sysﮐﻪ ﻗﺎﺑﻞ ﭘﺮﻭﺳﺲ ﺗﻮﺳﻂ ﺳﻴﻤﻴﻮﻟﻴﻨﮏ ﺍﺳﺖ ﺗﺒﺪﻳﻞ ﻣﻲﺷﻮﺩ.
ﺩﺭ ﮔﺎﻡ ﺩﻭﻡ ﻣﻘﺎﺩﻳﺮ ﺍﻭﻟﻴﻪ ﺣﺎﻻﺕ ) ﭘﻴﻮﺳﺘﻪ ﻭ ﮔﺴﺴﺘﻪ( ﺑﺼﻮﺭﺕ ﻳﮏ ﺑﺮﺩﺍﺭ ﺳﻄﺮﻱ ﺑﻪ x0ﺗﺨﺼﻴﺺ ﺩﺍﺩﻩ ﻣﻲﺷﻮﺩ.
ﺩﺭ ﮔﺎﻡ ﺳﻮﻡ str ،ﺑﺎ ﺑﺮﺩﺍﺭ ﺗﻬﻲ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﻣﻲﺷﻮﺩ.
ﻭ ﺩﺭ ﮔﺎﻡ ﺁﺧﺮ ،ﻣﺎﺗﺮﻳﺲ ﺟﻔﺘﻬﺎﻱ )ﺯﻣﺎﻥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ -ﺁﻓﺴﺖ( ﺑﻪ tsﻧﺴﺒﺖ ﺩﺍﺩﻩ ﻣﻲﺷﻮﺩ.
ﺑﺮﺍﻱ ﺗﺎﺑﻊ ﺍﺱ ﭘﻴﻮﺳﺘﻪ:
1
- Structure
٤
]ts=[0,0
ﺑﺮﺍﻱ ﺯﻣﺎﻥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﻣﻮﺭﻭﺛﻲ )ﮐﻪ ﺍﺯ ﺑﻠﻮﮎ ﻣﺘﺼﻞ ﺑﻪ ﻭﺭﻭﺩﻱ ﺗﺎﺑﻊ ﺍﺱ ،ﻣﻮﺭﻭﺛﻲ ﺍﺳﺖ(:
]ts=[-1,0
ﺑﺮﺍﻱ ﺯﻣﺎﻥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﻣﺘﻐﻴﻴﺮ )ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺗﺎﺑﻊ ﺍﺱ flag=4ﺭﺍ ﺑﺮﺍﻱ ﻣﺤﺎﺳﺒﻪ ﺯﻣﺎﻥ ﻧﻤﻮﻧﻪ ﺑﻌﺪﻱ ﻓﺮﺍ ﻣﻲﺧﻮﺍﻧﺪ(:
]ts=[-2,0
ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ.
flag=1 -۲
ﺑﺎ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺗﺎﺑﻊ ﺍﺱ ﺑﺎ flag=1ﺗﺎﺑﻊ mdlDerivativesﺻﺪﺍ ﺯﺩﻩ ﺷﺪﻩ ﻭ ﻣﻌﺎﺩﻻﺕ ﺩﻳﻔﺮﺍﻧﺴﻴﻞ ﺣﺎﻻﺕ ) & ( xﺑﻪ ﺗﺮﺗﻴﺐ
ﺗﻌﺮﻳﻒ ﺣﺎﻻﺕ ) ( xﺑﻪ ﺳﻄﺮﻫﺎﻱ sysﻧﺴﺒﺖ ﺩﺍﺩﻩ ﻣﻲﺷﻮﻧﺪ.
ﻣﺜﺎﻝ :ﺳﻴﺴﺘﻢ ﻏﻴﺮﺧﻄﻲ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ:
ìï x&1 = x 2
í
ïî x& 2 = x 1 - 3x 2 + u 1
2
flag=2 -۳
ﺑﺎ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺗﺎﺑﻊ ﺍﺱ ﺑﺎ flag=2ﺗﺎﺑﻊ mdlUpdateﺻﺪﺍ ﺯﺩﻩ ﺷﺪﻩ ﻭ ﻣﻌﺎﺩﻻﺕ ﺩﻳﻔﺮﻧﺲ ﺣﺎﻻﺕ ﮔﺴﺴﺘﻪ ) )( x (k + 1
ﺑﻪ ﺗﺮﺗﻴﺐ ﺗﻌﺮﻳﻒ ﺣﺎﻻﺕ ﮔﺴﺴﺘﻪ ) ) ( x (kﺑﻪ ﺳﻄﺮﻫﺎﻱ sysﻧﺴﺒﺖ ﺩﺍﺩﻩ ﻣﻲﺷﻮﻧﺪ.
ﻣﺜﺎﻝ :ﺳﻴﺴﺘﻢ ﮔﺴﺴﺘﻪ ﻣﺮﺗﺒﻪ ﺍﻭﻝ ﺗﮏ ﺣﺎﻟﺘﻪ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ:
) x 1 (k + 1) = x 1 (k ) + u 1 (k
ﺩﺳﺘﻮﺭ ﺯﻳﺮ sysﺭﺍ ﺑﻄﻮﺭ ﻣﻨﺎﺳﺐ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﻣﻲﮐﻨﺪ:
;)sys = x (1) + u (1
ﺯﻣﺎﻥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﻣﻲﺗﻮﺍﻧﺪ ﺑﺮﺍﻱ ﺗﻤﺎﻣﻲ ﻣﻌﺎﺩﻻﺕ ﺩﻳﻔﺮﻧﺲ ﻳﮑﺴﺎﻥ ﺑﺎﺷﺪ ﻳﺎ ﺍﻳﻨﮑﻪ ﻫﺮ ﻣﻌﺎﺩﻝ ﺩﻳﻔﺮﻧﺲ ﺩﺍﺭﺍﻱ ﺯﻣـﺎﻥ ﻧﻤﻮﻧـﻪ
ﺑﺮﺩﺍﺭﻱ ﻣﻨﺤﺼﺮ ﺑﻪ ﺧﻮﺩ ﺑﺎﺷﺪ .ﺳﻴﺴﺘﻢ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ:
) ì x 1 (k + 1) = x 1 (k ) + 0.5x 2 (k
í
) î x 2 (k + 1) = x 2 (k ) + u 1 (k
ﻭ ﻓﺮﺽ ﮐﻨﻴﺪ ﮐﻪ ﻣﺆﻟﻔﻪ ﺍﻭﻝ ﺩﺭ ﻫﺮ 0.3ﺛﺎﻧﻴﻪ ﻭ ﻣﺆﻟﻔﻪ ﺩﻭﻡ ﺩﺭ ﻫﺮ 0.5ﺛﺎﻧﻴﻪ ﺑﻬﻨﮕﺎﻡ ﻣﻲﺷﻮﺩ ﻭ ﺁﻓﺴﺖ ﻫﺮ ﺩﻭ ﺻﻔﺮ ﺍﺳـﺖ.
ﺩﺳﺘﻮﺭﺍﺕ ﺯﻳﺮ ﺯﻣﺎﻥ ﺷﺒﻴﻪﺳﺎﺯﻱ ﺭﺍ ﺑﺮﺭﺳﻲ ﻧﻤﻮﺩﻩ ﻭ ﺩﺭ ﺻﻮﺭﺗﻴﮑﻪ ﺯﻣﺎﻥ ﻓﻌﻠﻲ ،ﺯﻣﺎﻥ ﻧﻤﻮﻧـﻪ ﺑﻌـﺪﻱ ﺑـﺮﺩﺍﺭﻱ ﺑﺎﺷـﺪ sys ،ﺭﺍ
ﺑﻄﻮﺭ ﻣﻨﺎﺳﺐ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﻣﻲﮐﻨﺪ:
٥
;period_1=0.32
;offset_1=0.0
;period_2=0.5
;offset_2=0.0
;sys=x
if abs(round(t-offset_1)/period_1-((t-offset_1)/peroid_1))<1.0e-8
;)sys(1)=sys(1)+0.5*x(2
if abs(round(t-offset_2)/period_2-((t-offset_2)/peroid_2))<1.0e-8
;)sys(2)=sys(2)+u(1
flag=3 -۴
ﺑﺎ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺗﺎﺑﻊ ﺍﺱ ﺑﺎ flag=3ﺗﺎﺑﻊ mdlOutputsﺻﺪﺍ ﺯﺩﻩ ﺷﺪﻩ ﻭ ﺧﺮﻭﺟﻴﻬﺎﻱ ﺳﻴﺴـﺘﻢ ) ( uﺑـﻪ ﺳـﻄﺮﻫﺎﻱ sys
ﻧﺴﺒﺖ ﺩﺍﺩﻩ ﻣﻲﺷﻮﻧﺪ.
ﻣﺜﺎﻝ :ﻓﺮﺽ ﮐﻨﻴﺪ ﺧﺮﻭﺟﻲ ﺳﻴﺴﺘﻢ ﻣﺮﺗﺒﻪ ﺩﻭﻣﻲ ﺑﻪ ﻗﺮﺍﺭ ﺯﻳﺮ ﺍﺳﺖ:
y = x1 + x 2
ﺩﺳﺘﻮﺭ ﺯﻳﺮ sysﺭﺍ ﺑﻄﻮﺭ ﻣﻨﺎﺳﺐ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﻣﻲﮐﻨﺪ:
;)sys=x(1)+x(2
flag=4 -۵
ﺑﺎ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺗﺎﺑﻊ ﺍﺱ ﺑﺎ flag=4ﺗـﺎﺑﻊ mdlGetTimeOfNextVarHitﺻـﺪﺍ ﺯﺩﻩ ﺷـﺪﻩ ﻭ ﺧﺮﻭﺟـﻲ ﺁﻥ ﺑـﻪ ﺑـﺮﺩﺍﺭ
ﺳﻄﺮﻱ sysﻧﺴﺒﺖ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ ﻭ ﻣﻘﺎﺩﻳﺮ ﺯﻣﺎﻧﻬﺎﻱ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﺑﻌﺪﻱ ﺑﻪ ﺳﻄﺮﻫﺎﻱ sysﻧﺴﺒﺖ ﺩﺍﺩﻩ ﻣﻲﺷـﻮﻧﺪ .ﻣـﺜﻼﹰ
ﻓﺮﺽ ﮐﻨﻴﺪ ﻣﻲﺧﻮﺍﻫﻴﺪ ﺯﻣﺎﻥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﺑﻌﺪﻱ 1ﺛﺎﻧﻴﻪ ﺑﻌﺪ ﺑﺎﺷﺪ:
sys=t+1
flag=9 -۵
ﻫﻨﮕﺎﻣﻴﮑﻪ ﺷﺒﻴﻪ ﺳﺎﺯﻱ ﺑﻪ ﻫﺮ ﺩﻟﻴﻠﻲ ﺧﺎﺗﻤﻪ ﻳﺎﻓﺖ ،ﺍﻳﻦ ﭘﺮﭼﻢ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﻲﺷﻮﺩ .ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ sysﺑﺎ ﺑـﺮﺩﺍﺭ ﺗﻬـﻲ ﻣﻘـﺪﺍﺭ
ﺩﻫﻲ ﻣﻲﺷﻮﺩ.
٦
ﺗﻌﺮﻳﻒ ﺁﺭﮔﻮﻣﺎﻥ
ﻣﻘﺪﺍﺭ ﻓﻌﻠﻲ ﺯﻣﺎﻥ ﺷﺒﻴﻪﺳﺎﺯﻱ. t
ﻣﻘﺪﺍﺭ ﻓﻌﻠﻲ ﺑﺮﺩﺍﺭ ﺣﺎﻟﺖ .ﺩﺭ ﺻﻮﺭﺕ ﻭﺟﻮﺩ nﺣﺎﻟﺖ ﭘﻴﻮﺳﺘﻪ x
ﻭ mﺣﺎﻟﺖ ﮔﺴﺴﺘﻪ n ،ﻣﺆﻟﻔﻪ ﺍﻭﻝ ،ﺣـﺎﻟﺘﻬﻠﻲ ﭘﻴﻮﺳـﺘﻪ ﻭ m
ﺣﺎﻟﺖ ﺩﻳﮕﺮ ،ﺣﺎﻟﺘﻬﺎﻱ ﮔﺴﺴﺘﻪ ﻣﻲﺑﺎﺷﻨﺪ.
ﻣﻘﺪﺍﺭ ﻓﻌﻠﻲ ﺑﺮﺩﺍﺭ ﻭﺭﻭﺩﻱ. u
ﻫﺮﺑﺎﺭ ﮐﻪ ﺳﻴﻤﻴﻮﻟﻴﻨﮏ ﺗﺎﺑﻊ ﺍﺱ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﻲﮐﻨﺪ )ﺑﻪ ﺗـﺮ flag
ﺗﻴﺒﻲ ﮐﻪ ﺩﺭ ﺷﮑﻞ ) (۲ﺩﻳـﺪﻩ ﻣـﻲ ﺷـﻮﺩ( ،ﻣﻘـﺪﺍﺭ flagﺭﺍ
ﺗﻨﻈﻴﻢ ﻣﻲ ﮐﻨﺪ ﻭ ﺗﺎﺑﻊ ﺍﺱ ﺑﺎ ﺑﺮﺭﺳﻲ ﻣﻘـﺪﺍﺭ ﺍﺭﺳـﺎﻟﻲ ،ﻋﻤـﻞ
ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ ﺩﺭ ﺟﺪﻭﻝ ) (۳ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ.
ﺗﻌﺮﻳﻒ ﺁﺭﮔﻮﻣﺎﻥ
ﺁﺭﮔﻮﻣﺎﻥ ﭼﻨﺪ ﻣﻨﻈﻮﺭﻩ ﺧﺮﻭﺟﻲ ﮐﻪ ﺗﻌﺮﻳـﻒ ﺁﻥ ﻭﺍﺑﺴـﺘﻪ ﺑـﻪ sys
ﻣﻘﺪﺍﺭ ﻣﺘﻐﻴﺮ flagﺍﺳﺖ )ﺑﻪ ﺟﺪﻭﻝ ۳ﻣﺮﺍﺟﻌﻪ ﮐﻨﻴﺪ(.
ﻣﻘﺪﺍﺭ ﺍﻭﻟﻴﻪ ﺑﺮﺩﺍﺭ ﺣﺎﻟﺖ ﮐﻪ ﺷـﺎﻣﻞ ﻣﻘـﺪﺍﺭ ﺍﻭﻟﻴـﻪ ﺣﺎﻟﺘﻬـﺎﻱ x0
ﭘﻴﻮﺳﺘﻪ ﻭ ﮔﺴﺴﺘﻪ ﻣﻲ ﺑﺎﺷﺪ .ﺍﻳﻦ ﺁﺭﮔﻮﻣﺎﻥ ﺗﻨﻬـﺎ ﺯﻣـﺎﻧﻲ ﮐـﻪ
flagﺻﻔﺮ ﺍﺳﺖ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺍﺳﺖ.
ﺁﺭﮔﻮﻣﺎﻥ ﺧﺮﻭﺟﻲ placeholderﻣﻲ ﺑﺎﺷـﺪ ﮐـﻪ ﺁﻧـﺮﺍ ﺑـﺎ str
ﻣﺎﺗﺮﻳﺲ ﺗﻬﻲ ) ][ (ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﻣﻲ ﮐﻨﻴﻢ .ﺍﻳﻦ ﺁﺭﮔﻮﻣﺎﻥ ﺗﻨﻬـﺎ
ﺯﻣﺎﻧﻲ ﻧﻴﺎﺯ ﺍﺳﺖ ﮐﻪ flagﺻﻔﺮ ﺍﺳﺖ.
ﻣﺎﺗﺮﻳﺲ ﺟﻔﺘﻬﺎﻱ ﺯﻣﺎﻥ ﻧﻤﻮﻧﻪ ﺑـﺮﺩﺍﺭﻱ ١ﻭ ﺁﻓﺴـﺖ .٢ﺁﻓﺴـﺖ ts
ﺯﻣﺎﻥ ﺍﻭﻟﻴﻦ ﻧﻤﻮﻧﻪ ﺑـﺮﺩﺍﺭﻱ ﻭ ﺯﻣـﺎﻥ ﻧﻤﻮﻧـﻪ ﺑـﺮﺩﺍﺭﻱ ﻓﺎﺻـﻠﻪ
ﺯﻣﺎﻧﻲ ﺑﻴﻦ ﺩﻭ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﺍﺳﺖ .ﻣﺎﺗﺮﻳﺲ ﻓـﻮﻕ ﺩﺍﺭﺍﻱ ﺩﻭ
ﺳﺘﻮﻥ ﻭ ﺣﺪﺍﻗﻞ ﻳﮏ ﺳﻄﺮ ﺍﺳﺖ ﮐﻪ ﺯﻣﺎﻧﻬﺎﻱ ﻧﻤﻮﻧﻪ ﺑـﺮﺩﺍﺭﻱ
ﺩﺭ ﺳﺘﻮﻥ ﺍﻭﻝ ﻭ ﺁﻓﺴﺘﻬﺎ ﺩﺭ ﺳﺘﻮﻥ ﺩﻭﻡ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﻧﺪ .ﺍﻳـﻦ
ﺁﺭﮔﻮﻣﺎﻥ ﺗﻨﻬﺎ ﺯﻣﺎﻧﻲ ﻧﻴﺎﺯ ﺍﺳﺖ ﮐﻪ flagﺻﻔﺮ ﺍﺳﺖ.
ﺟﺪﻭﻝ ۲
1
- Sampling Time
2
- Offset
٧
ﻋﻤﻞ ﺍﻧﺠﺎﻡ ﺷﺪﻩ ﺗﻮﺳﻂ ﺗﺎﺑﻊ ﺍﺱ ﻣﻘﺪﺍﺭ flag
١
ﺁﻣﺎﺩﻩ ﺳﺎﺯﻱ ﺳﺎﺧﺘﺎﺭ sizesﻭ ﺗﺨﺼﻴﺺ ﺍﻥ ﺑﻪ sysﻭ ﺗﻨﻈﻴﻢ ﻣﻘـﺎﺩﻳﺮ 0
x 0ﻭ strﻭ . ts
ﻣﺤﺎﺳﺒﻪ ﻣﻘﺪﺍﺭ ﻣﺸﺘﻖ ﺣﺎﻻﺕ ﭘﻴﻮﺳﺘﻪ ﺑﺮ ﺍﺳﺎﺱ ﻣﻘـﺎﺩﻳﺮ ﻓﻌﻠـﻲ ﺣـﺎﻻﺕ 1
ﭘﻴﻮﺳــﺘﻪ ﻭ ﻭﺭﻭﺩﻳﻬــﺎ ﻭ ﺗﺨﺼــﻴﺺ ﺁﻥ ﺑــﻪ sys . sysﺗﻨﻬــﺎ ﺁﺭﮔﻮﻣــﺎﻥ
ﺧﺮﻭﺟﻲ ﺍﺳﺖ.
ﺑﻬﻨﮕﺎﻡ ﮐﺮﺩﻥ ﺣﺎﻟﺘﻬﺎﻱ ﮔﺴﺴﺘﻪ ﺑﺮ ﺍﺳﺎﺱ ﻣﻘﺎﺩﻳﺮ ﻓﻌﻠﻲ ﺣﺎﻻﺕ ﮔﺴﺴﺘﻪ 2
ﻭ ﻭﺭﻭﺩﻳﻬﺎ ﻭ ﺗﺨﺼﻴﺺ ﺁﻥ ﺑﻪ sysﺗﻨﻬﺎ ﺁﺭﮔﻮﻣﺎﻥ ﺧﺮﻭﺟﻲ ﺍﺳﺖsys ..
ﺗﻨﻬﺎ ﺁﺭﮔﻮﻣﺎﻥ ﺧﺮﻭﺟﻲ ﺍﺳﺖ .ﺩﺭ ﺻﻮﺭﺕ ﻭﺟﻮﺩ ﺯﻣﺎﻧﻬﺎﻱ ﻧﻤﻮﻧـﻪ ﺑـﺮﺩﺍﺭﻱ
ﭼﻨﺪﮔﺎﻧﻪ )ﺑﻴﺶ ﻟﺰ ﻳﮏ ﺳﻄﺮﻱ ﺑﻮﺩﻥ ﻣﺎﺗﺮﻳﺲ ( tsﻫﺮ ﺑﺎﺭ ﮐـﻪ flag
ﺑﺮﺍﺑﺮ ۲ﺍﺳﺖ ،ﺗﻤﺎﻣﻲ ﻣﺆﻟﻔﻪﻫﺎﻱ ﺑﺮﺩﺍﺭ ﺣﺎﻟﺖ ﮔﺴﺴﺘﻪ )ﮐﻪ ﺷﺎﻣﻞ ﺣﺎﻻﺗﻲ
ﮐﻪ ﺗﻐﻴﻴﺮ ﻧﻤﻲﮐﻨﻨﺪ ﻧﻴﺰ ﻣﻲﺑﺎﺷﺪ( ﺑﻬﻨﮕﺎﻡ ﻣﻲﺷﻮﻧﺪ.
ﻣﺤﺎﺳﺒﻪ ﺧﺮﻭﺟﻴﻬﺎ ﺑﺮ ﺍﺳﺎﺱ ﻣﻘﺎﺩﻳﺮ ﻓﻌﻠﻲ ﺣﺎﻻﺕ ﻭﻭﺭﻭﺩﻳﻬﺎ sys .ﺗﻨﻬـﺎ 3
ﺁﺭﮔﻮﻣﺎﻥ ﺧﺮﻭﺟﻲ ﺍﺳﺖ.
ﻣﺤﺎﺳﺒﻪ ﺯﻣﺎﻧﻬﺎﻱ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ ﺑﻌﺪﻱ ﻭ ﺗﺨﺼﻴﺺ ﺁﻥ ﺑﻪ . sys 4
٢
ﺍﺗﻤﺎﻡ ﺗﻤﺎﻡ ﻭﻇـﺎﻳﻒ ﭘﺎﻳـﺎﻧﻲ ﺷـﺒﻴﻪ ﺳـﺎﺯﻱ .ﺁﺭﮔﻮﻣـﺎﻥ ﺧﺮﻭﺟـﻲ ﻧـﺪﺍﺭﺩ 9
) ][=( sys
ﺗﻌﺮﻳﻒ ﻋﻀﻮ
ﺁﻧﺮﺍ ﺑﺎ ﺗﻌﺪﺍﺩ ﺣﺎﻻﺕ ﭘﻴﻮﺳﺘﻪ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﮐﻨﻴﺪ. sizes.NumContStates
ﺁﻧﺮﺍ ﺑﺎ ﺗﻌﺪﺍﺩ ﺣﺎﻻﺕ ﮔﺴﺴﺘﻪ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﮐﻨﻴﺪ. sizes.NumDiscStates
ﺁﻧﺮﺍ ﺑﺎ ﺗﻌﺪﺍﺩ ﺧﺮﻭﺟﻴﻬﺎ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﮐﻨﻴﺪ. sizes.NumOutputs
ﺁﻧﺮﺍ ﺑﺎ ﺗﻌﺪﺍﺩ ﻭﺭﻭﺩﻳﻬﺎ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﮐﻨﻴﺪ. sizes.NumInputs
ﺍﺯ ﺧﺮﻭﺟﻲ ﺑﻠﻮﮎ ﻋﻼﻭﻩ ﺑﺮ ﺣﺎﻻﺕ ،ﺗﺎﺑﻊ ﻭﺭﻭﺩﻱ ﻧﻴﺰ ﻫﺴﺖ ﺑﺎ sizes.DirFeeddthrough
) ۱ﻣﺎﻧﻨــﺪ ﺑﻠــﻮﮎ ﺑﻬــﺮﻩ ،ﺗﻮﺍﺑــﻊ ﻣﺜﻠﺜــﺎﺗﻲ ﻭ ﺩﺭ ﺳﻴﺴــﺘﻤﻬﺎﻱ
ﻓﻀﺎﻁ ﺣﺎﻟﺘﻲ ﮐﻪ ﻣﺎﺗﺮﻳﺲ Dﻣﺨﺎﻟﻒ ﺻﻔﺮ ﺍﺳﺖ( ﻭ ﺩﺭ ﻏﻴﺮ
ﺍﻳﻦ ﺻﻮﺭﺕ ﺑﺎ ۰ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﮐﻨﻴﺪ.
ﺁﻧﺮﺍ ﺑﺎ ﺗﻌﺪﺍﺩ ﺟﻔﺘﻬﺎﻱ )ﺯﻣﺎﻥ ﻧﻤﻮﻧﻪ ﺑﺮﺩﺍﺭﻱ -ﺁﻓﺴﺖ( ﻣﻘـﺪﺍﺭ sizes.NumSampleTimes
ﺩﻫﻲ ﮐﻨﻴﺪ .ﺑﺮﺍﻱ ﺗﺎﺑﻊ ﭘﻴﻮﺳﺘﻪ ﺻﺮﻑ ،ﻣﻘﺪﺍﺭ ﺁﻥ ﻳﮏ ﺍﺳﺖ.
ﺟﺪﻭﻝ ۴
1
- Initialization
2
- Termination
٨