两张照片相互卷积可以得到与它们都相似的图片,是吗?

(原文写于2013-11-6,发布于振动论坛,信号处理方法分区)
(重编辑于2017-8-27,重新生成了图片,调整了部分内容)

在这里我想继续探讨“卷积”这一数学工具。主要是为了验证网络上部分“科普”文章所讲的“……卷积甚至可以用在考试作弊中,为了让照片同时像两个人,只要把两人的图像卷积处理即可……”这一说法。不同于证明一件事情的难度,证伪一件事情总是相对简单的,尤其当所需要的所有数据和工具都可以在编程实现时。所谓实践出真知,这里我们就找两张照片,来做卷积试一试吧!

继续阅读

发表在 绘图, Data processing, Python, 卷积, 数值计算 | 一条评论

意义与效率

高校里,一份较稳定的职位竞争激烈,尤其对于各985“名校”。世界上每一天都有新的博士答辩,新的博士后出站,新的海龟回国。各擅胜场的年轻人都对名校们各层次的“人才计划”虎视眈眈:有的人文章多,有的人文章精,有的人“能量”大,有的人已经获得青年基金资助。而更牛的人什么都有,还年轻。这就不得不说说“效率”这件被从小教育到大,我却一直做得不好的事。

继续阅读

发表在 龙门阵 | 2条评论

几个特征值求解函数的性能比较

正如在scipy和numpy中与特征值问题相关的函数谈到的,Python的常用数值计算库numpy和scipy中一共有好几个功能和限制稍有不同的特征值问题求解函数,今天我们用一个8×8的“特殊”矩阵(Rosser矩阵)来看看这些函数的计算速度和结果精度如何。

继续阅读

发表在 特征值问题, Dynamics, Python, 数值计算 | 留下评论

理解波动(附1):参考文献

这里我按照不同的主题列出一些重要的参考文献。这些文献集中了前人研究的精华,可谓博大精深。加起来不到30篇,却可以说是该领域的重要“内功心法”。按图索骥,以它们为线索可以直达整个研究领域的大部分角落。
继续阅读

发表在 波动 | 留下评论

理解波动(四):将无限”叠加”为有限——边界条件

在“理解波动”系列的前三篇中,我们主要还是站在熟悉的数值工具——有限元方法的基础上来理解波动现象。实际上,正如有限的均质梁、杆能方便的获得解析解,无界的杆、梁甚至板也可以获得解析解。只是其求解思路与有界结构有所不同。在本文中,我们将展示无界结构的解经过一定的处理也可以获得有界结构的解,正如有界的模型经过一定处理(例如之前介绍过的人工边界条件)可以用以分析无界结构那样。在本文中,将采用纯解析的方法获得无界域上的波动解,然后将其处理为有界域上的响应。其中,对边界条件的处理和理解起到了至关重要的作用。 继续阅读

发表在 ANSYS, 波动 | 留下评论

理解波动(三):从频域到时域

理解波动(二):以有限计算无限——人工边界条件中,我们说到了如何把“无限远”处理为一种特殊的边界条件。通过这样的处理,一个无阻尼的无界结构等效为一个在边界上具有强阻尼的有限结构。这样,原先由近场流向远场的能量现在流向了等价的边界阻尼器中——已经似乎都很完美。尤其是对于标准波动方程,其ABC既可以用于频域又可以用于时域。但对于弯曲波,还有一个小问题待讨论,那就它的ABC的等价阻尼系数与频率有关,不能处理为阻尼力。边界处的力与位移实际上是“分数阶导数”的关系。这导致它只能直接用于计算频域响应(或只含一个频率成分的激励力),那么,如何计算无限梁对任意激励的时域响应呢? 继续阅读

发表在 ANSYS, 傅利叶变换, 有限元, 波动 | 留下评论

理解波动(二):以有限计算无限——人工边界条件

理解波动(一):在有限结构上算出“波动”中,我们展示了如何简单地通过常用的有限元软件计算出结构的“波动现象”。可以发现,在由激振力的引起的扰动抵达边界前,清晰地呈现出“波传播”的特性。而在经历了边界的数次反射后,由于整个结构各处都有了变形,直观上更容易按照“自由振动”的特性来理解。在上一个算例中,我们初步探讨了“波动特性”是如何蕴含在有限结构中的。在本文中,我们将展示,“无限”是如何蕴含在“有限”中的。即如何通过修饰有限结构来计算无限结构的特性。由于没有边界,无限结构是研究波动的更理想模型。无限大结构虽然在实际中不严格存在,但是它仍有工程应用场合,如地震研究、隔声、无损探伤等。总的来说,在这些应用场合中:1)只关心到波未被边界反射之前的行为;2)由于阻尼或结构太大,波很难抵达边界。 继续阅读

发表在 ANSYS, Dynamics, 有限元, 波动 | 一条评论

理解波动(一):在有限结构上算出“波动”

(原文写于2014-2-13,发布于振动论坛,一般力学和振动理论分区)
(重编辑于2015-12-24,论述和讨论有所增删)

在网络论坛和甚至正式的学术会议中,关于结构动力学中的“波动方法”都是一个热点话题。尤其是其与工程上常用的以模态叠加法为基础的“振动方法”之间的区别和联系,更是值得深入玩味。其中有许多非常有意思的论点,有些来自于直观的工程经验,有些来自于对公式的粗略检视。比如,有的观点认为波动方法只能分析无界(无限大)结构的动力学行为,而振动方法只能分析有界(有限)结构的动力学行为。又有些观点认为有限结构在高频段就必须考虑“波动效应”,但什么是“波动效应”却语焉不详。实际上,“振动”方法和“波动”方法只是同一个问题的两种不同理解思路而已。换言之,他们都可以计算有界和无界结构在低频和高频动力学特性。为了说明这个观点,更好地辨析和理解“波动”和“振动”,最直接的办法是进行一些计算,看看所得的结果是否与预期相同。这也是本系列文章的目的。这里给出第一个算例。 继续阅读

发表在 ANSYS, Dynamics, 有限元, 波动 | 一条评论

guidata库使用手记:快速定制科学计算程序的图形界面

(原文写于2011-9-3 ,发布于振动论坛,算法及编程语言分区)
(重编辑于2015-11-15)

今天说说用于快速开发简单图形界面的guidata库。和大多数的Python库一样,guidata有自己的技术支持页面和实例完善的帮助文档,然而文档毕竟是死的,只有使用起来更能体会其中的奇技淫巧。本文将通过一个数据处理的例子展示如何使用guidata。然后通过另一个例子说明guidata的一些特性是如何通过Python强大的面对对象机制达到的。 继续阅读

发表在 设计模式, Python, 图形界面 | 留下评论

论人情

四川重庆的本土笑星李伯清老师在二十年前的段子中就说过关于跟人打招呼时的一些小技巧。比如发现街坊迎面走来,自然是要招呼一下的,只说“你好”或者“早上好”之类不够热络,况且时间太短,不足以覆盖两人相向而行的时间段。

在这里大家可以算一下,你和街坊王大爷相互发现的距离至少是十米吧,人普通步行的速度是6公里每小时,也就是每秒1.67米,那么你们从彼此发现到错过的时间约三秒,这三秒钟就各自说一句“你好”确实显得太空旷。

继续阅读

发表在 随笔, 龙门阵 | 留下评论