蓝冠招商《Q374919》大多数电源设计人员从来没有使用过函数式语言进行模拟,但是大多数编程人员甚至不知道什么是函数式语言。那么,为什么硬件设计师要去程序员都不会去的地方呢?这很简单,蓝冠官网 因为函数式语言比用于模拟的传统语言更具表达性和更容易使用。
在这个博客中,我将编写在状态反馈帖子中使用的模拟代码。
为了保持简单,示例使用了浮点而不是不动点,并且几乎没有抽象。一个熟练的函数程序员可以构建灵活的、蓝冠注册 可重用的模拟框架,但是初学者会感到困惑,所以我从简单开始。我的目标是帮助您想象可能的,而不是提供一个完整的模拟器。但就像我的其他帖子,你可以复制我所做的,做真正的工作。
我将使用的语言是Haskell。使用Haskell的原因是它是一种纯函数式语言,不像f#,而且它支持延迟计算。惰性求值允许模拟无限的状态列表,在本例中没有使用这种方法,但是它使编写任意时间序列变得更容易。因此,如果您为了自己的模拟而学习Haskell,蓝冠招商 那么从长远来看,您的投资将会得到回报。此外,Haskell是跨平台的,可以在Mac、Linux、Windows等平台上运行,而f#主要运行在Windows平台上。现在,您必须相信这是正确的函数语言。
预备考试
请注意,本文中的代码支持滚动查看长行的末尾。即使没有行号的代码也有这种行为。
模拟代码的一个遍历
如果你想了解Haskell的介绍,你可以上网搜索。我不会重复别人已经做过的事情,而是直接深入一个示例,解释代码的作用,并展示结果。这个例子在GHC Haskell平台上运行。
如果您想深入了解,这里有一个链接(Haskell介绍)。你可能想要深入研究我的代码,直到你感到有点困惑,然后阅读介绍,然后回来重读这篇文章。这不是一篇简单的文章,但我认为函数式语言的价值是巨大的,你会做出一些投资。如果你需要帮助,你也可以留下评论或电子邮件。最主要的是,如果你觉得这篇文章有点挑战性,这是意料之中的,所以不要感觉不好。很少有人有使用函数式语言的经验,你的大脑被训练成根据状态进行思考,特别是如果你是一个硬件/电子工程师。
在我之前的文章中c#的例子中,有一个使用积分控制的工厂的状态模型和一个补偿器。模拟生成一个可以绘制的输出文件,在本例中使用gnuplot。