哈喽,小伙伴们大家好,我是爱学编程知识的二毛,今天呢我学习的是 time 模块。那首先第一个要和大家分享的是这个 time 函数, time 函数用于返回当前时间的时间,初他返回的是一个浮点数,在下边呢也举了一个例子, 那我们现在来打印一下这个结果,那执行的结果就是当前时间戳,然后后边呢跟了一个浮点数。第二个要和大家分享的是 local time 函数, local time 函数的作用是将时间戳格式化为本地时间, 返回 structured time 这个对象,那 local time 函数有一个参数用于接收时间戳,如果调用函数时不提供时间戳,那 local time 默认会使用 当前的十千桌。那这个地方呢,我们啊分别写了有这个参数的,然后还有一个是没有参数的,那现在呢,我们来运行一下,那这个呢就是他的运行结果, 那从这个运行结果当中呢,我们就可以看到这个 local time 返回的是一个 struck time 类型,并且可以验证时间戳是从一九七零年,然后一月一日,然后八点开始的。 第三个和大家分享的是 m k time 函数,那这个 m k time 函数执行与 g m time 和 local time 函数相反的操作,他接收 struck time 对象作为参数,返回用秒数来表示时间的浮点数。 m k time 的参数可以是结构化的时间,也可以是 完整的九位元组元素。那这里同样也举了一个例子,这是一个元组,然后下边呢去分别进行了一个打印,那我们执行,这是他执行的结果,那从这个例子的执行结果呢,我们可以看得出 m k time 可以使用时间元组作为参数,也可以使用 time struct 这个实力作为参数。这是第三个要分享的内容。 第四个要分享的内容是 g m time 函数。 g m time 函数能将一个时间戳转换为 u t c 时区的 struck time。 可选的参数 se 表示从一九七零 一月一日以来的秒数,那这个 j m time 的函数默认值为 time 点 time 函数返回 time 点 struck time 类型这个对象,那这里呢?我们再次来运行,那这个呢,就是他运行的结果,那一个是呃带参数的,一个是不带参数的。第五个要和大家分享的是这个 a s a time 函数。 a s a time 函数接受 时间元组并返回一个可读的形式为年月日十分秒的这样的一个二十四个字符串。 asc time 这个函数接受的参数可以是九个元素的元组,也可以是通过函数 g m time 或者是 local time 返回的时间值。那这个地方呢,也分别写了两个,这个 t 呢,就是我们上面写的这个圆组,那我们继续来运行,就分别是这个运行的这个结果。那第六个要和大家分享的 是这个 c time, 这个 c time 函数能把一个时间戳转化为 time 点 a s c time 的这个形式,那如果参数没有给或者是这个值维纳的时候, 将会默认 time 点 time 为参数,它的作用相当于执行 asc time, 那我们照常来运行,运行的结果就是目前我们看到的啊这个。然后第七个要和大家分享的是 sleep 函数,这个 sleep 函数它会用于推迟调用现成的运行, 可通过参数来指定秒数表示进程挂起的时间,那这里呢,我写了一个六秒,就是表示他的挂起时间,那我们来运行,那这里边呢,他会写开始的时间呢?是十一,然后中间停了六秒,这个地方就是十七,那他们之间正好就是相差的, 我们写的这个六秒。第八个要和大家分享的就是 s t r f time 这个函数用于接收时间原组并返回以可读字符串表示的当地时间,会以这个年月日十分秒的这样的一个形式出现他的运行结果。最后一个要和大家分享的是 s t r p time 函数, 那这个函数能够根据指定的格式把一个时间字符串解析为时间原组,这是他返回的结果。那以上呢,就是今天我要和大家分享的这个太母模块当中的内容,仅供大家参考。 那下一期呢,我会分享一下 data 模块里边的内容。好了,小伙伴们下期再见,拜拜。
粉丝687获赞1950



让我们来听听这几个音,你能判别他们的音高吗?前两期视频里啊,有粉丝宝宝问,人耳识别音高的机理是什么呢?我们来利用一个正弦函数合成吉他音色,然后来说明人耳识别音高的机理是什么。 上一期啊,我们讲了吉他三弦空弦的音高是 g 三,这根弦震动的时候啊,会同时激发出若干个驻波,这些驻波之间呢,又存在着某个频率的整数倍关系,其中最低的频率啊,我们称之为基频, 对应的是一百九十六赫兹,这个基频一百九十六赫兹呢,决定了音高。我们先来听一下基频一百九十六赫兹的纯音到底是什么样子的, 你是不是觉得这个声音和吉他三弦空弦的音高 g 三完全不一样?这一期啊,我们就来推演一下,怎么从击屏一百九十六赫兹的唇音制作出一个音高 g 三来。 首先呢,我们可以先把这个一百九十六赫兹的唇音的振动方程表达出来,这个表达式啊,在食欲途中是一个理想的正弦波。在频谱图里面呢,可以看到这个声音的构成啊,只有一个频率,也就是一百九十六赫兹。 这个声音呢,听起来有点低沉,比较像电子音或者是那种较准音。但是啊,自然界当中其实并不存在这样一个纯音,真实的弦振动呢,都是击频加上整数倍的斜波叠加出来的。 这个表达式里面啊,第一项是击频,第二项和第三项呢,决定了声音的丰满度。第四项和第五项啊,决定了声音的明亮感。剩下的高阶项呢,决定了声音的金属感。 可以看到的是在食欲图里面啊,这个声音的波形已经不是理想的正弦波了。在频谱图上呢,可以看到构成这个声音的频谱啊,也不再是单一的基频,而是包含了很多的斜波频率。现在听起来呢,这个声音就很像是乐器的声音了,但是好像还不够真实。 如果你在真实的拨弦啊,声音并不是持续的,而是有弦起震、衰减、延音释放这四个过程,那么我们就把这四个过程呢写入到这一组斜拨的表达式里面,用 e t 来表示, 这样呢,声音就有了拨弦感,但是好像还是不够真实,因为实际上啊,一根弦在震动的时候,会激发出若干个斜拨,其中高频斜拨呢,它会衰减的快,也就是说有的声音啊会先消失,有的声音会后消失, 所以我们还需要加入合理的衰减项,才能够让他更像一个真实的乐器声音。所以我们把表达式进一步的修改一下。现在呢,我们来听一下,声音是不是更真实了, 我们再增加一点拨弦的时候,拨片和琴弦摩擦的声音,其中呢,这个表达式中的 n t 啊,是一个随着时间指数衰减的随机信号,我们现在来听一下, 现在好像还缺少一点点弦的金属感,我们通过增加一点非斜波性来实现,也就是把频率进行微小的偏移, 我们可以进一步再增加一点共鸣和混响听一下,这已经很接近了,我们再利用 car plus 算法来优化一下。最后我们来听一听成果吧,现在我们来对比一下,只有击频的正弦波的声音和我们模拟的吉他三弦的声音 好像,感觉吉他三弦听起来更加的明亮,更加的尖锐。而单纯。只有一百九十六赫兹的基频信号的正弦波啊,听起来似乎更低沉。不是说人耳感知的是基频吗?现在纯基频来了,为什么我们听起来又不一样呢? 这是因为啊,人耳对音高的判断是需要参照物的,只有在一组特定的斜坡结构当中啊,人耳才能够在比较的情况下分辨出那个单一频率的基频来。这种参照物的感觉就好像是你看月亮, 月亮的大小呢,其实一直都没有变过,但是如果旁边的参照物不一样,你就会觉得月亮有的时候看起来大,有的时候看起来小。 这个单一的正弦波呢,在生活当中最经典的应用就是电视中的消音频率是一千赫兹,因为早期处理器算力很弱,而质贝正弦波呢,是最简单的, 然而对一千赫兹这个频率感知是非常灵敏的,这个频率穿透力也很强,能够有效的覆盖被消音的内容,我们来听一下。 那么为了要说明音高是模式识别的结果,我们来通过一个音色实验来直观的感受一下。 假定啊,有一根弦积平是两百赫兹,正常的情况下呢,积平的连续整数倍频率都会同时存在,也就是说弦振动可以表示为以下的这一个表达式。 下面呢,我们来分四种情况来讨论一下。假如说第一种情况只存在积平和积平的二三四五六次斜坡,那么这种情况下呢,斜坡的构成就是二百赫兹,四百赫兹,六百赫兹,八百赫兹、一千赫兹,还有一千二百赫兹,然后我们来听一下这个声音。 第二种情况呢,我们把击屏二百赫兹给去掉,这个时候啊,斜波构成就变成了四百六百,八百一千,还有一千二百赫兹。来听一下, 听起来好像和第一种情况感觉是差不多的,虽然啊,第二种情况不存在击屏,但是人耳还是可以根据斜波结构自动脑补出击屏二百赫兹,从而使得这个斜波剧烈完整。所以呢,前两种情况听起来似乎是一样的。 第三种情况呢,我们把所有的基次斜拨都去掉,只保留出偶次斜拨,这个时候啊,斜拨的构成就变成了四百八百一千二百赫兹,这个音听起来呢,好像高了一个八度, 这个就是吉他上泛音的音高翻倍的原理。最后啊,我们把所有的偶次斜拨都去掉,只保留基次斜拨,这个时候呢,斜拨的构成就是二百六百,还有一千赫兹。 听一下,我们仔细来对比一下,会发现第一种情况,第二种情况还有第四种情况产生的声音呢,给人的听感其实是一样的。 实际上啊,一组斜波的击频并非等于这组斜波的最低频率,而是等于这组斜波的最大公约数。 第一种情况中啊,最大公约数就是二百赫兹,所以呢,人耳给你的音高就是二百赫兹。在第二种情况中呢,虽然没有击频,但是剩下的这几个频率的最大公约数啊,依然是二百赫兹。所以在第二种情况当中,击频其实也是二百赫兹,人耳感知的音高也是二百赫兹, 在第四种情况中也是一样的,但是呢,在刚刚第三种情况当中啊,他的最大公约数不是二百,而是四百,所以他的音高其实比其他情况当中的音高啊,高出了一倍。在音乐上呢,我们把它叫做高出了一个八度,这就是人耳识别音高的根本激励, 这个斜坡序列的最大公约数啊,就是人而感知的音高。那么也有粉丝宝宝提问说,电吉他的失真和过载的本质又是什么呢?我们模拟一下过载失真的效果,然后来感受一下。 首先啊,需要明确的一点就是,过载呢,是轻度的失真,而失真呢,是重度的过载。他们在物理上啊,其实是一回事,但是程度不同。 想象一下,你对着一个麦克风轻声的说话,声音是很清晰的,但是你大声吼叫的时候,喇叭就破音了,这就是过载。继续加大音量呢,破音就会越来越严重,就成了失真。 这个过程中的物理本质啊,很简单,就是信号放大导致了超过设备极限,然后就最终导致了波形被消切。 具体来看,理想的情况下呢,信号的放大应该是限性的,比如说,当输入信号增大的时候,输出信号也就会随之限性的增大,但是放大器呢,它总是有预值的。对于电子管来说,当输入信号较小的时候啊,输出信号可以随着输入信号的增大,然后限性的增大。 当输入信号增大到一定程度之后啊,输出信号的增速啊,就会开始放慢,这个过程呢,可以通过双曲正切函数来表达, 换句话来说,电子管天生啊,就是软箍,它的物理特性就决定了,当信号接近极限的时候,它不是突然被切断,而是像汽车慢慢的踩刹车一样,渐近式的饱和。 类似于图中的这根蓝色的曲线,在域值的附近啊,有了一个缓和的拐点,这个拐点呢,可以在频谱上产生丰富的基次和偶次斜拨。 但是呢,晶体管啊,天生就是硬锭拨,信号呢,一旦超过预值,他就会像撞到墙上一样,直接就被切平了,这就产生了大量尖锐的肌刺,斜坡硬的动态响应,现代冷酷的音色,类似图中这个红色的曲线,在预值处呢,他的拐点是生硬的,尖锐的, 这就会导致啊,两种器械也对应了不同的音色感受。那么晶体管如何实现电子管的效果呢?其实也很简单,通过在放大器的反馈路径里啊,加上二极管和多极渐近放大的方式,就能够实现电子管的效果。这里呢,篇幅有限,我们就不展开去介绍了。 大家在生活当中还发现了哪些有意思的物理现象呢?评论区里面可以留言哦,记得点赞关注哦!
