IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> sinusoidal sweep正弦扫频信号 -> 正文阅读

[Python知识库]sinusoidal sweep正弦扫频信号

相对于单音信号,正弦扫频信号即为在一定的频段范围内频率连续变化的信号。正弦扫频信号可作为系统激励和测取系统传递函数的较好方法。它主要实现对元器件、电路及整机的频率特性的测试,广泛应用在科研及生产等多个场合。同样地,在滤波器设计中,如果要知道滤波器的频率特性*。测量滤波器的脉冲响应,能够精确地获取频率特性。但是如果无法进行精确的数字的脉冲响应运算的话,那么用Sine Sweep波(频率逐渐变高的正弦波,也叫做频率扫描)来测量系统的频率特性是再适合不过的了。例如我们可以用Sine Sweep波来测量某个Mp3播放器的的频率特性,以及设置不同的EQ(均衡器)之后的频率特性。我们可以让播放器播放某个特定的Sine Sweep文件,用录音设备记录下它的输出声音,查看录下来的波形就能大概知道系统的频率特性了。 我们知道,频率的单位是赫兹(Hz),人耳能听到的频率范围是20-20000Hz,但人耳对Hz这种标度单位并不是线性感知关系。例如如果我们适应了1000Hz的音调,如果把音调频率提高到2000Hz,我们的耳朵只能觉察到频率提高了一点点,根本察觉不到频率提高了一倍。

*谐波输入下,输出响应中与输入同频率的谐波分量与谐波输入的幅值之比A(ω)为幅频特性,相位之差φ(ω)为相频特性,并称其指数表达形式 为系统的频率特性。 稳定系统的频率特性等于输出和输入的傅氏变换之比,而这正是频率特性在自控原理中的物理意义。

1kHz以下,越低的频率要越大声才能听起来有同等响度。

2kHz~5kHz之间为人耳最敏感的区域,而且人耳在低音量时比起高音量时对此区域敏感。

1kHz~2 KHz间人耳对音量的敏感度会稍差些。

6kHz以上,人耳的敏感度会逐步下降,但比起低频率来说,音量大小对人耳低频的敏感度影响高于5kHz以上频率。

整体来说,人耳对于中频的敏感度较佳,高低频在音量小时,人耳较不灵敏,但随着音量变大,人耳对各频率的反应差异性就慢慢变小了。

图中显示了人耳对声音频率感知图,并不是线性感知关系,于是为了符合人类的听觉特性,通常频率响应图的频率轴都采用对数坐标。因此我们要产生的Sweep波的频率变化就需要成指数增长。

sine sweep正弦扫频信号推导如下:

?用python画出正弦扫频信号如下:(频率从20Hz到200Hz,扫频时间为1秒):

SAMPLING_RATE = 44100
SWEEP_TIME = 1
F0 = 20
F1 = 200
PEAK = 0x2000
data = sinesweep(F0, F1, SWEEP_TIME, SAMPLING_RATE, PEAK)
plt.title("sweep data")
plt.plot(data)
plt.show()

def sinesweep(f0, f1, sweeptime, samplingrate, peak):#扫频信号:起始频率f0、截止频率f1、采样率和幅度
    k = exp(log(float(f1) / f0) / sweeptime)#增长系数k的计算公式
    data_len = sweeptime * samplingrate#数据长度
    data = array.array('i', [0] * data_len)#创建一个长度为数据长度的全为0的int类型数组,用以存储每个采样点的幅度值
    dt = 1.0 / samplingrate#两个采样点的相隔时间
    t = 0.0#起始时间
    p = 2 * pi * f0 / log(k)
    for i in range(data_len):
        data[i] = int(peak * sin(p * (pow(k, t) - 1)))#将每个采样点的幅度值存入数组
        t += dt#每次加一个时间间隔
    return data

扫频信号如下图:

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:27:16  更:2022-03-10 22:29:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:46:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码