科学网

 找回密码
  注册

tag 标签: Simulink

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

造一台光子计算机应该注意什么——关于计算的那些事(一)
yxgyylj 2019-4-19 02:55
笔者近日事务繁忙,心情也颇不宁静,又适逢夏日降临,于是便想起了朱自清的那篇《荷塘月色》。虽然朱自清因惯用叠词和儿化语而一向被少年时代的笔者视为“儿童文学家”,但若自身真的忙起来,最先浮现在脑海里的并非是上下五千年的哪一曲诗词歌赋,反倒是朱先生的儿童文学。 然而话说回来,笔者常在异国他乡,月色虽不算稀奇,荷塘却实不多见,最多只能举头望明月或举杯邀明月,要想学习朱自清先生睹物解烦,物质基础就有些跟不上思想高度了。好在科技的发展使得解烦解暑的方式越来越多元化,见不到荷塘也算不得遗憾。一种新的方式解烦解暑就是电子游戏。 从小霸王上的《魂斗罗》、电子游戏厅里的《拳皇》系列和DOS系统的《金庸群侠传》(当时还在使用3.5英寸软盘)到《星际争霸》、《极品飞车》、《模拟人生》再到如今各种炫酷的大型游戏,例如《巫师III》和《GTA V》,电子游戏的制作水平越来越高,玩家对电子游戏的品味也越来越好。 所谓“美人只配王者拥有”,这些高质量的电子游戏必须配以高技术水平的硬件。不过就算如此,能耗和散热的问题始终是一个难题——例如笔者使用两年前购买的笔记本电脑(显卡GTX 960,CPU: Intel Core i7-6700HQ )试玩了一下巫师III,不出十分钟 CPU (中央处理器) 就开始发烫。这样一来不仅无以解烦,还使本就酷热的夏日更变本加厉了。 当家里停气时,可以玩玩游戏,玩饿了还能顺手做个煎蛋 看过笔者《 让GPU参加到计算中来 》一文的读者可能对 GPU (图像处理器)产生了深刻的印象。既然 CPU 容易发烫,而 GPU 的并行计算能力很强,那么能不能让 GPU 来代替 CPU 处理更多任务以减少散热问题呢? 尽管确实有不少公司在从事这一方面的工作(这样的 GPU 称为 GPGPU),例如英伟达的 CUDA 平台,但是一方面说来,这些平台的普及率还颇为有限,全球多数超级计算中心依然是基于 CPU 计算(笔者所在地的超算中心去年才开始支持 GPU 计算)。 在同样高的计算效率下,GPU计算集群的大小、耗电量和价格都远低于CPU计算集群 另一方面也是最主要的,目前 几乎所有 CPU 和 GPU 都是电子元件 ,欧姆定律告诉我们,有电阻的地方就会产生散热,这是所有电子元件都没法绕过的坎。尽管从效率上来看, GPU 散热已经比 CPU 好很多了,但它的表现终究还是会被欧姆定律所左右。 那么有没有办法摆脱欧姆定律,从而制作出几乎没有能量损失的计算机呢?我们可以考虑用光子取代电子,因为光子又快又专一,作为信息传播媒介实在再适合不过了——这便是 光子计算机 (Photonic computer)的设计初衷。 一、触发器——电子计算机的基本单位 自1946年被发明开始,计算机从来都是 电子 元件为根基,若要一下就改成光子计算机谈何容易。因此在制作光子计算机之前,我们必须先弄清楚电子计算机的基本构成。 我们知道从理论上来说,计算机的所有运算和指令都是基于二进制数,也就是 0 和 1 。为了方便处理二进制数,人们用 触发器 (Flip-Flop)来储存并处理 0 和 1 这两个不同信号。下面的动图表明了触发器的大致工作原理: 设定-重写触发器(SR flip-flop)的工作原理 这动图是什么意思呢?图中的 Q 表示要储存的信息(0 或 1), S 代表设定,R 表示重新设定。 表示 抑或门 (NOR gate,这是个二极管,所以只允许电流单方向通过),当两个输入值同时为 0 或同时为 1 时,其输出为 0,否则输出为 1。 读者们可以自行验证,当 输入(R, S) = (0, 1) 时,输出(Q, Q拔) = (1, 0) ,此状态称为 设定 ;当 (R, S) = (1, 0) 时,(Q, Q拔) = (0, 1) ,此状态称为 重设 ; (R, S) = (0, 0) 时,系统不发生变化。 不过上面的 SR 触发器有明显的不足之处,那就是当 (R, S) = (1, 1) 时,(Q, Q拔) = (0, 0) ,但 Q拔 作为 Q 的死对头,它们是不能相等的,于是这就出现了一个矛盾!所以在 SR 触发器中,(R, S) = (1, 1) 又称为禁止状态,一旦出现可能整个电路就崩溃了。为了弥补这一不足,人们又设计出了 JK 触发器、D latch 之类的更高级的电路模块。不过归根结底,这些模块都是以 SR 触发器为基础的 。 二、用光子构建触发器 在上一章中,读者们对触发器有了一个大概的了解,知道这个小玩意可以用来处理最简单的二进制运算。以电学为基础的触发器之所以能够成功运作, 就是因为电路存在“开”和“关”两种状态,正好对应了 0 和 1 两个数值 。 如果要用光子计算机代替电子计算机,那就需要设计出对应的“光路”以实现“开”和“关”(或者两种稳定态)。但问题是光属于电磁波,来无影去无踪,不像电子那样乐于禁锢在原子核附近,怎样才能让光子形成稳定的两种状态呢? 俗话说“江山代有才人出,各领风骚数百年”。和电子相比,光的风骚之处地就在于它是电磁波家族的一员,拥有发生反射(reflextion)、衍射(diffraction)和折射(refraction)的能力。要想通过光产生两种不同的稳定状态,就要依靠光的这几种性质。 下面的例子就是最早的 双稳态光学元件 (Bistable photonic device): 法布里-珀罗干涉仪通过利用多个不同透镜,使射出的光线拥有两种不同频率 其中法布里-珀罗干涉仪(Fabry-Perot resonator)长这样,其工作原理也不言而喻了: 法布里-珀罗干涉仪本质上就是利用两个精心设计的平行透镜,使折射光和反射光发生干涉 不过话说回来,上面的双稳态光学元件由多个不同部件构成,显得太过笨重。进入20世纪下半叶以后,光纤的快速普及使得光学和材料科学之间碰撞出了新的火花;此时又恰逢非线性光学和复杂性科学逐渐兴起,光学的发展正式进入一个新的纪元,这些也为双稳态光学元件提供了新的思路。 三、以光之道还施光身——非线性光学与混沌理论 光纤是允许光通过的细管状材料。我们知道,光总是沿直线传播的,但光纤可以通过反射来把光掰弯。如果把光纤掰成一个圈,那么光经过绕场一周后,不就能自己同自己干涉了吗!这就是所谓的 单光纤环共振仪 (SFR resonator): 由于光是电磁波,它满足著名的 麦克斯韦方程组 (不熟悉读者可以跳过): 上面方程组本质上就是波动方程。数学定理告诉我们,满足方程的电场强度 E(t) 是时间 t 的函数,它的相位发生周期性变化 。如上图(单光纤环共振仪)所示,入射光 E_in 进入光纤环后,由于折射的作用 其中 κ 控制了入射光的分配比例,它由光纤的性质决定。 笔者注释(可跳过): 接下来的关键就在于如何确定上面方程的解了,因为有四个未知变量,却只有两个方程——事实上有经验的读者会觉察到,“未知量过多方程过少”这种粥少僧多的情况在中学和本科低年级阶段的物理课中可谓是老生常谈,这时候就需要我们再从物理现象中挖掘出更多的方程。我们知道,这四个未知电场都产生于同一束入射光,它们之间只相差某个相位(也就是说频率和振幅相同)。具体说来: , 其中 φ 就是相位差,φ_L 和 φ_NL 分别表示相位差的线性和非线性部分,此处是由于Kerr 效应产生的非线性,它和 入射光的振幅平方成正比。详细内容可参考 。 为了让读者对非线性光学有一个大概的认识,我们先只考虑非线性相位差而忽略线性相位差的影响(下一节将加上线性相位差,作为反馈机制)。经过一系列化简(参考上面注释一)后,我们可以通过迭代方程: 其中 E_N 表示入射光通过光纤环 N 次以后对应的电场数值,注意这是一个复数 来研究 E_1 的表现。上面公式中 A 表示光波的振幅;B 就比较神通广大了,它整合了共振仪的很多性质,可谓一手遮天。因此,要想利用光子构造触发器,第一步就是需要选择出合适的参数 A 和 B ,使得 单光圈共振仪成为双稳态光学元件 (定义回顾上一节内容)。用数学的语言描述,也就是 使得上面的迭代方程有且仅有两个稳定的迭代解 (收敛态)。 那么如何控制这个方程的迭代解呢?我们先来看看在不同 A(光波振幅大小)的情况下,第 n 次通过光纤的光的电场分布: 其中 B=0.15,为固定值 可见随着入射光振幅增加,通过单光纤共振仪的输出光变得越发不可捉摸,例如在 A=9 时,入射光和输出光之间已经基本找不到太大关系。我们把这种不可捉摸的表现称之为 混沌 (Chaos)。 如果我们固定 A=5,让 B 发生变化又有什么新结果呢?我们来试试看: 输出光的表现更加复杂,到最后干脆直接排布出一个旋涡状星云以示抗议!因此,太大的 A 和 B 都不是我们想要的,因为此时输出光的表现就像中国股市一般神鬼莫测。 四、实验效果 —— 控制论介入 读罢前面几节的介绍,一些读者可能还并不满足——目前为止,笔者介绍的所有内容都还只是纸上谈兵,因为常数 A 和 B 通常是固定的,不受直接控制。那么到底如何才能有效控制单光纤共振仪的输出呢?下面我们来制作一个简单的模块,以模拟单光纤共振仪的表现: 模拟环境为 Simulink 在上一章的实验中我们得知,当 A=10,B=0.15时,出射光的分布出现混沌状态。在上面的模块中,我们看看“观察”子模块中得到的结果: x轴为迭代次数,y轴为出射光振幅大小(强度) 确实一团糟。但如果我们在但光圈共振仪中加入一个 线性的 (注意,此前所有的分析都是纯粹的非线性光学)反馈控制的机制: 左上角为加入的反馈机制,用以实时缩小光的振幅 当控制比例为 0.55 时: 迭代次数超过 1200 后,输出光的振幅(强度)就稳定了下来 混沌看起来就没那么嚣张了!不过此时的输出光只有一个稳定状态,要知道想要造出光子计算机,需要两个稳定状态的输出光。 我们可以继续在反馈控制的比例系数上做文章。如果我们把控制比例增加到 0.85,我们就达到了我们想要的结果: 输出光在强度为 22 和 26 两处徘徊! 这不正好就有了两个不同的稳定态么?这样一来,我们就在理论上给出了用光子构建逻辑门的可能性! 也许还有读者意犹未尽——那么还有没有别的方法来控制出射光的表现呢?事实上,这就变成了一个纯粹的数学问题,相关的理论叫做 混沌控制 (Control of chaos)。限于篇幅,笔者在此不做过多介绍,有兴趣的读者可以参考该领域的经典文章 。 总结 正如笔者开头所述,虽然电子芯片是如今的主流,但由于电子的物理特性,电子芯片会受到许多限制;另一方面,随着量子计算的日益深入,电子芯片也逐渐满足不了这一趋势了。作为基本粒子,光子在表现上与电子有诸多不同之处,因此可想而知,光子计算机和电子也存在本质上的区别。这便是这篇文章的出发点。 既然光子计算机比电子计算机有如此多的优势,并且理论上也能够得以实现,那为什么很难看到它的量化生产呢?其原因至少有两个,都在本文中有所涉及,我们再来回顾一下: 光子芯片很大程度上依赖于非线性光学的发展,但这个分支出现出现的时候,第一台电子计算机已经问世快三十年了,理论积淀和关注度都远及不上后者; 光学元件的设计比电学元件复杂很多。本文所例举的“单光纤共振仪”已经是最简单的光学元件; (许多非线性光学的先驱后来都把主要精力集中在了复杂性科学上,最典型的例子就是哈肯和他的《协同论》。他的工作引起了许多理论数学和理论物理学家的关注,相对而言关注实际应用的人却并不多) 什么时候光子计算机才能够真正走进我们的生活呢?让我们拭目以待,毕竟从现在看来,里面还有大量振奋人心的问题值得深入研究! 非线性光学与分歧理论(Bifurcation Theory) 参考文献: David A. Patterson and John L. Hennessy, Computer Organization and Design , Morgan Kaufmann; 3rd edition (2005). Stephen Lynch, Dynamical Systems with Applications Using MAPLE ; Birkhäuser Basel 2010. Y.H. Ja, Multiple bistability in an optical-fiber double-ring resonator utilizing the Kerr effect. IEEE J. Quantum Electron. 30(2), 329–333 (1994). Ott, E., Grebogi, C., and Yorke, J.A. (1990) Controlling Chaos, Phys. Rev. Lett. 64:1196. 《 混沌理论到底是什么——从蝴蝶效应出发 》 往期精彩回顾: 让GPU也参加到计算中来 电脑眼中的信息长什么样——带你全面认识编码论 如何科学地解读你的睡眠? 同一个细胞,不同的你 暗物质与暗能量之谜——宇宙大尺度的广义相对论! 朋友,这种药你见过吗? 经济周期是怎么来的? 为什么太阳系如此稳定? 麦哲伦环航地球真的能证明地球是圆的吗?拓扑学告诉你答案! 一个极易被低估的数学定理,以及三种不同的证明方法 欢迎大家关注我的公众号“科普最前线”(id:kpzqxyxg),对话前沿科学!每篇文章都由笔者亲自完成或修改,希望和大家一起交流!
590 次阅读|0 个评论
[转载]在Simulink中使用方形还是圆行Sum(求和)模块呢
xiaoxiaoxingzi 2018-1-6 00:09
本文原创自MATLAB技术论坛,原帖参见http://www.matlabsky.com/thread-35510-1-1.html 在使用 Simulink 的过程中,发现很多用户不知道如何、或者没有时间来设置Sum模块的端口。比如,当我看到下面的框图时,让我感觉的相当刺眼: 下面提供一些小Tips,让您的Sum模块看起来更加舒服和便于理解。 圆形(Round)Sum模块 从Simulink模块库中拖拽新的Sum模块时,它默认形状是圆形的,并且在左边和下边分别具有一个输入端口: 当Sum模块形状设置为Round时,所有的输入端口从上到下均匀的分布, 很多同学发现上图的List ofsignals中有一个|,不知道这个是做什么的,其实这个是一个占位符(非必须),表示要将这个端口位置空出来 ,比如 如果我们想在模块上面添加一个端口,就可以这样修改信号列表(去掉那个|,添加三个+++) 方形(Rectangular)Sum模块 直接将默认Sum模块的形状修改为Rectangular,效果如下 在使用方形Sum模块时,个人认为,没有任何好的理由使用占位符(|),因此大部分情况最好将|删除 Sum模块的信号 有时我们需要对一个向量或数组进行求和,此时可以将List of signs只有一个+,然后Sum over选择Alldimensions(对所有元素求和) 另外求和模块还可以指定求和的维数方向 细心的朋友就会发现,以前一直以为Sum模块只能做两或三个数的加法,原来 将Sum的端口修改下成一个+,就可以变成sum函数的功能!其实这条在Product(相乘)模块中也是通用的 。 到底是方形还是圆形呢 既然方形也可以,圆形也不错,那Sum模块到底使用方形还是圆形呢?其实,这个没有绝对的规则,只是个人习惯而已,但是个人认为: (1)当执行从左到右的流程(没有反馈信号)时,使用方形看起来更舒服些,比如 (2)当流程中包含反馈信号时,保持默认的圆形是一个不错的主意:
个人分类: 编程相关|1565 次阅读|0 个评论
[转载]Simulink中"连续系统仿真"和"离散系统仿真"的区别
xiaoxiaoxingzi 2018-1-4 13:01
最近学习simulink看到这里也很糊涂,正好看到有网友在讨论这个问题。 问题的提出-- 什么叫连续系统仿真和离散系统仿真? 计算机进行的仿真难道不都是在时间上离散的吗?看simulink的help说,说是连续系统仿真是解常微分方程,离散系统仿真则是依赖于系统的前一个状态。 hopeasy 发表于 2008-11-1 21:19 楼主首先把这个牢牢记住: Z变换-离散系统-差分方程 S变换-连续系统-(偏)微分方程 因为离散系统采用差分方程表示,和前一时刻的状态有关,所以必须知道先前状态;而 连续系统 采用微分方程描述,可以说是只和时间变量有关,可以通过微分方程求出任一时刻的解,不需要知道这之前的状态 akjuan 发表于 2008-11-17 19:56 看大家讨论很热烈,我们看看官方的意见: Two types of states can occur in a Simulink model: discrete and continuous states. 在simulink模型中存在两种模块:discrete和continuous A continuous state changes continuously. Examples of continuous states are the position and speed of a car. 一个continuous状态的改变是连续的,比如连续行进中的车的速度和位移。 A discrete state is an approximation of a continuous state where the state is updated (recomputed) using finite(periodic or aperiodic) intervals. 一个discrete状态是一个continuous状态的近似的表达,既将连续状态使用有限个(周期或非周期性)间隔时间值表达discrete状态 An example of a discrete state would be the position of a car shown on a digital odometer where it is updated every second 比如行驶中的车在数字仪表上显示的速度和位移,这种显示是每秒更新一次的 as opposed to continuously. In the limit, as the discrete state time interval approaches zero, a discrete state becomes equivalent to a continuous state. 对于continuous和discrete状态来说,假设discrete取值间隔是zero,那么这两种状态是相等的。 这是mathworks官方资料说的,我依据个人理解译过来,不知道大家是否明白了 continuous和discrete两种状态的主要差别在于他们取值的时间问题,既在continuous中,理论是无间隔时间,计算机的做法可能是很短时间内更新一次值,而discrete则是很长时间更新一次值,这个很短和很长的概念是他两相对来说的。 为什么他们更新的时间不一样呢?其实很简单,大家想一下就会明白了因为continous状态没有跳跃和奇点等发生,所以一般来说,变化缓慢,不依靠前一次结果也能准备得出而discrete可能各次间隔中值都有可能发生跃变,所以特别依靠上一次值或者说continous的值,是可以求导而得的, 而discrete只能差分了 但是根据我个人的认识离散系统和连续系统的区别是引入了“采样定理”(观测者,observer) 1、连续系统-微分方程,某些情况下是可以给出解析解的,y=f(x(t)), 初始状态知道后,以后的状态就确定了;但是某些情况下是无法给出解析解的只能用数值分析的方法给出近似解,计算机就是干这个,尽管计算机是处理离散化的,但是它本质上是用数值分析迭代的方法解决问题的。 2、离散系统-差分方程,是要考虑采样定理的(single/mutli-rate), 然后才是要考虑状态方程或者系统函数来分析系统的。 可以参考网络课程:http://jpkc.nwpu.edu.cn/jp2008/03/kechengneirong.asp?id=33pid=406
个人分类: 编程相关|2953 次阅读|0 个评论
浅谈动态系统的线性化
yujiangnb 2016-4-1 20:53
著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:Yu Jiang 链接:http://zhuanlan.zhihu.com/p/20694858 来源:知乎 (本文只代表个人观点) (这里所说的线性化,包括下面会用到的Exact Linearization, 都是指基于一阶泰勒展开的线性化近似,而不是基于微分几何的全局线性化或者输出反馈线性化。) 1 为什么要探讨线性化? 很多人看到这个题目,或许第一感觉会是:“为什么要研究线性化?线性化不就是一阶泰勒展开吗?这再简单不过了,用小学数学就好啦!” 在理论上,这一点也没错。比如我们要在原点线性化如下的非线性模型,相信大多数人不假思索的就能告诉我:线性化的结果是 y = u 既然如此,我们为什么还要探讨线性化呢? 答案很简单,上面一个例子是理论上的,也就是经过很大程度上简化了的,几乎完美的。那么实际上,工程中需要线性化的问题是什么样的呢? 看看下面的例子,假如有这样一个遥控飞机的模型。工程师现在想把控制器参数优化一下。为此,他需要线性化从飞机控制器的输入到导航控制器的输入之间这个可能含有几千个模块,几万个信号的子系统。很显然,想要解析的泰勒展开这样一个模型,在实际中是相当费时费力的。 那么,我们来看看难点都在哪吧: 1) 没有非线性方程: 理论上,动态系统总是可以用光滑的ODE来建模。而实际上,在工程应用中,系统往往是用框图来搭建的,比如用Simulink等软件。 用框图来建模有非常多的好处,比如可以方便的模块化,通过观察某个具体的信号值来debug, 还有其他的好处就不一一列举了。但是像这样复杂的框图模型是很难等价的转化成一组非线性方程组的。甚至有些模块,根本就不存在解析表达式。所以,很难对一个非线性方程去求偏导数来获得泰勒一阶展开项。 2) 不光滑: 有些模块或许存在解析数学表达式,但是根本不可导;有些可能存在大量的奇异点;有些甚至导数无从定义,比如enabled subsystem, triggered subsystem等。 3)多重采样时间: 在很多实际模型里面,有些模块是连续的,例如积分器。有些模块是离散的,采样时间可以是0.1秒,可以是10秒,甚至可以是无穷大,比如constant block。那么,最后线性化出来的系统到底应该是连续的,还是离散的? 4) 牵一发而动全局: 假设,在最理想的情况下:我们真的把这个模型对应的非线性方程组表示出来了, 并且最终验证了模型的准确性,然后成功的进行了线性化。可是,第二天模型的作者表示:”我把某几个子系统里的几条信号删掉了,然后把其它几条信号的连接方式重新设计了一下,你再帮我泰勒展开一下吧“。很不幸,这很大程度上意味着我们之前的解析方程组被彻底改变了,所有的工作需要重头在来过。这样的分析方式在实际的工程开发中是很不现实的,因为时间成本太高。 2 数值扰动 既然解析方法不行,那么应该怎么做呢?一个比较传统而且有效的方法是数值扰动。我们还是来看看第一个例子。 用数值扰动的方法,我们可以在输入端输入一个常数,比如说du = 0.1。 然后, 我们测量输出信号,发现 dy = 0.0998, 两者相除,我们得到了一个基于数值线性化的结果 y = 0.998*u 如果用更小的du,事实上我们可以得到更精确的结果。 现在这个方法看起来比解析方法好用了很多。在某种程度上,它的思想其实就是把整个系统当成是一个黑箱,通过输入输出来进行辨识。事实上,对于比较小和比较简单的模型,数值扰动的效果都还是不错的。 那么,它有什么问题呢?看几个例子就能明白了。 2. 1 延时的处理 我们来看看下面这个例子: 在“黑箱”中,有一个隐藏的很深的延时模块。在这种情况下,我们给这个系统提供扰动输入,然后去测量输出的时候,会发现输出信号过了很久都没有发生变化。由此,我们很有可能会错误的把这个系统线性化成一个 0 增益! 当然了,如果事先能知道其中有一个这样的Delay block,是可以采取一些措施来进行更好的辨识的。但即使如此,自动控制原理告诉我们,在频域上逼近一个Delay Block的一个很好的方式是用Pade Approximation。 但是这种逼近用数值扰动是很难做到的,特别是对于复杂的,含有多个具有不同时间长度的延时环节的系统。 现在,你也许已经可以看出此处存在的一个矛盾: 数值扰动是把整个模型当成一个黑箱,不需要知道黑箱里面的信息。但是我们实际上是知道这个黑箱里所有模块的具体情况的。可是这些信息在数值扰动的过程中没法有效的利用上。 2.2 一些特殊的模块 再看看下面这个例子 假如我们用数值扰动来线性化这个模型,那么我们会遇到两个不同的情况:1)扰动的足够小,我们得到的是一个 0 增益的线性化结果。2)扰动信号大到一定的程度,我们会得到一个线性的关系。 那么,哪个结果是对的呢?答案是:都对,也都不对。这取决于用户的具体问题。如果用户故意用这样一组quantizer, 目的就是想分析在一个很小的范围内此模型的动态。在此情况下那么1)是所期望的。还有一种可能,就是用户本身是不想用Quantizer的,但是在用数字电路实现某个部件的时候,不得已的让一个本来应该是线性增益的关系变成了这样的Quantization的结果。那么在这种情况,2)是用户所期望的。 对于这样一个特殊的模块,我们的确可以通过调整干扰信号的大小来得到不同的结果。但是假设有无数多个类似这样的模块存在于某个模型中,有些模块是属于情况1)的,有些是属于情况2)的,那么整个基于数值扰动的线性化结果就无法如用户所期望的了。 Simulink Control Design工具箱和Block-by-Block方法 Simulink Control Design 工具箱的一大特点就是它提供了Block-by-Block的线性化方法。这个方法有时也叫Exact Linearization (不同于基于微分几何的全局线性化)。简单来讲,在线性化的过程中,每个模块会先被线性化,算出各自的Jacobian矩阵。然后由Simulink Control Design工具箱把这些信息有效的整合在一起(这是一个非常复杂的过程),从而计算出整个模型的线性化结果。 在这个例子中, 线性化通路上有3个模块,他们的Jacobian分别是 cos(0) = 1, n阶的pade approximation的状态空间表达式,和1. 那么对于这个简单的系统而言,整个线性化的结果就是这三个线性系统的级联。 在第二个例子中 用户可以打开Quantizer的窗口,然后 把 Treat as gain when linearizing 的选项打上勾,这样就会使得这个模块被线性化成一个线性增益。 Simulink Control Design工具箱还带有各种高级的功能。例如,对于一些很难线性化的模块,用户可以自己配置此模块的线性化结果,用于整个模型或者子系统的线性化。 更多的内容请参考Simulink Control Design的官方文档: Simulink Control Design Documentation
7967 次阅读|0 个评论
[转载]Matlab/Simulink在不同的版本中无法打开的解决办法
stone2002 2012-9-23 10:25
原标题:Matlab/Simulink中的一个常见问题 在网上下载的仿真模型或者打开别人的模型,有可能出现这样的错误: Warning: Unable to load model file ‘C:\Documents and Settings\topcool\Desktop\abc.mdl’ due to the presence of characters that are not supported in the current character encoding setting ‘GBK’. Either: 1) run “bdclose all; set_param(0,’CharacterEncoding’, Enc)” where Enc is one of Shift_JIS, windows-1252, ISO-8859-1, then load the model, or 2) remove the unsupported characters. The first such character occurs on line 458, byte offset 22. 解决的方法就是按照上面的提示在工作空间里输入下面的命令: bdclose all; Enc=’windows-1252′; set_param(0,’CharacterEncoding’,Enc); 然后再到上面菜单里点打开文件。 有的时候自己做的模型可能出现无法保存的情况,也是编码的问题,有可能是输入了中文, 也有可能是输入了特殊的字符,比如角度值的那些罗马字符。 这个时候可以在工作空间下输入命令: set_param(‘ModelName’, ‘SavedCharacterEncoding’, ‘ISO-8859-1′) 其中的ModelName是自己的mdl模型名字。 还有个要注意的是模型所在的目录必须是英文的,不要有中文字符。。 本文转载自 http://blog.manboo.info/546.htm ,特对博主表示感谢!
14646 次阅读|0 个评论
ProE与Simulink/Simmechanics刚体动力学联合仿真
sunwp 2012-5-15 16:02
本文以 ProE5.0和 MatlabR2010b 为例进行介绍,ProE与Simmechanics连接不同于Solidworks与Simmechanics连接,后者是利用 Linking and Using the SolidWorks Add-In,前者是利用Linking and Using the Pro/ENGINEER Toolkit,这与ProE配置文件的特殊性相关。 (一)插件安装( installed SimMechanics Link software ) 1) 选择对应的 ProE 及 matlab 版本的插件下载( http://www.mathworks.com/products/simmechanics/download_smlink_bounce.html , 需要免费注册) , 不需要解压; 2) 打开 MATLABR2010b 将下载的两个文件所在目录置为 MATLAB 当前路径; 3) 在 MATLAB 命令窗口输入 install_addon('smlink.r2010b.win32.zip') 命令,引号内是下载的压缩文件名;运行上述命令,命令窗口提示 install_addon('smlink.r2010b.win32.zip') Installing smlink... Extracting archive smlink.r2010b.win32.zip to C:\Program Files\MATLAB\R2010b... Adding directories for smlink to path... Installation of smlink complete. To view documentation, type "doc smlink". (二)软件关联( Linking and Using the Pro/ENGINEER Toolkit ) 1) 在 C 盘下创建如下文件夹及 smlink.dat 文件: C:\data\smlink_config\smlink.dat; 2) 利用写字板打开 smlink.dat 并添加如下代码后存盘; NAME SimMechanics Link STARTUP dll EXEC_FILE C:\Program Files\MATLAB\R2010b\bin\win32\cl_proe2sm.dll TEXT_DIR C:\Program Files\MATLAB\R2010b\toolbox\physmod\smlink\cad_systems\proe\text UNICODE_ENCODING false END 3) 打开 ProE 程序,点击工具 - 选项,在 config.pro 中添加如下选项及值,重新启动 ProE 将看到 SimMechanics Link 菜单。 toolkit_registry_file c:\data\smlink_config\smlink.dat (三)联合仿真: ProE 与 Simmechanics 联合仿真 1) 在 ProE 建立机械装配体并保存 *.ASM ; 2) 点击 SimMechanics Link ,利用 Export XML 将组件保存成 *.xml ; 4) 启动 matlabR2010b ,在命令窗口运行 mech_import ,在对话框中打开第 2 步中存储的 robot.XML ,将生成相应的 SimMechanics 模块; 5) 在生成的 SimMechanics 模块中进行设计、仿真,将结果数据传到硬盘 excel 文件,再利用 excel 数据驱动 ProE 中零件运动从而实现三 维仿真。 本文源于最近《 Simulink 动力学仿真与实习》课程的教学。
7964 次阅读|0 个评论
复制Simulink中的仿真模型到word中形成矢量图的方法
热度 1 lingxuange 2012-4-23 21:42
复制Simulink中的仿真模型到word中形成矢量图的方法
整矢量图时不存在失真,那么 simulink 能够导出仿真模型的矢量图吗?答案是肯定的。下面以 Matlab2011b 为例。 1 、在 File-Preferences-Figure Copy Template-Copy Options 选项。设置如下: 2 、回到 simulink 主窗口,根据模块,合理缩放窗口。其中快捷键 V :缩小; R :放大; Space :调整到合适大小。然后模块,选择 Edit-copy model to clipboard 选项。 3 、打开 word 文档,粘贴图片,即可将矢量图复制到 word 中了。 经过上面步骤,复制到 word 中的图片即为一矢量图,在放大缩小时不会造成失真。
28195 次阅读|2 个评论
[转载]MapleSim和Maple航空航天应用介绍研讨会
COMSOLFEM 2011-5-20 13:07
MapleSim 和 Maple 航空航天应用介绍研讨会 主办方: 莎益博工程系统开发(上海)有限公司 活动内容 活动日期: 2011 年 5 月 25 日 活动地点:南京航空航天大学科学馆 202 活动时间: 13:30-15:00 详细日程 时间 主题 13:30–15:00 MapleSim 航空航天应用介绍 1. Maplesoft 介绍 2. MapleSim 功能介绍 3. 符号建模和仿真的优势 4. HIL 应用 5. 案例:机翼控制 6. 案例:火箭飞行轨迹的预测 7. 案例:空间系统的建模 8. 案例: 6 轴平台的建模和分析 9. 工具箱和附加产品介绍 15:00-15:10 问答环节 会议涉及以下技术主题: ·多领域系统(包括受控对象)建模和仿真 现代系统日趋复杂,对传统的建模技术提出了越来越严峻的挑战,例如:不同工程领域子系统(例如多体机械、液压、电磁、流体、热、控制等)的有效整合;系统模型的创建和诊断;大规模模型的处理能力等。新出现的物理建模技术大大简化了这一任务,本次会议将 演示 MapleSim 物理建模的基本方法,以及创建适用于现代数字控制和机电一体化应用的系统模型,介绍飞行控制和空间机构的应用案例。 ·硬件在环测试 HIL 产品开发流程要求在物理样机之前进行大量的测试,确保系统的正确行为。系统的整合通常需要通过半实物仿真,测试真实的部件和“虚拟”部件,运行在高性能实时模拟器上,使它们的行为如同它们安装在整个系统中一样。硬件在环测试 HIL 有助于发现设计缺陷,大大增加了项目的成功率。现有的挑战包括:控制器和模型的同步,很多工具不适合;生成的代码令人担忧;可能牺牲模型的保证度以获得性能,从而降低了该模型的有用性。本次会议将介绍国外同行如何利用最新的技术和工具应对这些挑战。 来自: http://www.cybernet.sh.cn/seminar_show.php?mode=eventsclassnav=seminarid=26 Maple和 Maplesim试用申请 回 执 单 ------------------------------------------------------------------------------------------------------------------------------------------------------- 确认参加发布会,请填写回执后按以下方式联系我们: § 发邮件至: marcom@cybernet.sh.cn § 发传真至: 021-64716050 ; Monica Zhang 收 单位: 人数: 地址: 邮编: 姓名: 职务: 电话: 传真: 电邮: 网站: 您所关心的问题: 1. 2. 3. 4. 5.
个人分类: 未分类|3816 次阅读|0 个评论
Maplesim模型生成的优化代码输出到实时或其他程序simulink等
COMSOLFEM 2011-5-5 16:06
Maplesim模型生成的优化代码输出到实时或其他程序simulink等
个人分类: 未分类|4735 次阅读|0 个评论
六自由度并联机构——Simulink正解程序(牛顿拉夫森方法)
jianghzhit 2011-4-21 21:46
六自由度并联机构(Stewart Platform)的正解研究曾是该领域的一个热点问题,包括解析解和数值解。这两个问题都已经解决了。对于工程应用来说,数值解法更实用。正解的数值解法一般采用Newton-Raphson方法,文献 中对其收敛性,初值问题,收敛速度有非常详细的证明。 这里给出了本人开发的基于Newton-Raphson方法的Simulink正解模型,供对此感兴趣的同行交流。该模型可以在RT-win,xPC,RT-Lab环境下实时运行。 模型下载 : 六自由度并联机构运动学正解.rar 运行环境:Matlab 2006b 以上版本 版权:本程序可以复制,下载,传播,修改,作者拥有该程序的著作权。 免责声明:本程序只用于学术交流和研究,本人不承担任何程序运行过程造成的损失; 参考文献: S.H. Koekebakker. Model based control of a flight simulator motion system . Delft: Delft University of Technology, 200 1, pages 50 ~ 60
个人分类: 科研心得|7292 次阅读|0 个评论
Simulink Response Optimization
热度 1 jiyipeng 2009-3-15 22:46
Simulink Response Optimization