py之信号稀疏性分析(一)

it2025-10-20  7

写在前面的话: 总结一下压缩感知课程的内容,都是为了学习巩固,有什么不对的地方还希望各位大佬指正出来,不胜感激。其实课程是要求matlab,老师也给部分代码,但是最终还是用py进行实现,经过查阅大量资料,有摘过来的部分代码,也有复现的代码,我将所有实验过程完整代码上传到github。

关键点:压缩感知三要素

稀疏性观测矩阵重构算法

实验过程采取循序渐进的方式,由一维语音信号到二维图像信号,由观测矩阵再到OMP重构算法,其中还包括了RIP限制条件。

信号稀疏性分析 —— 一维(语音)信号分析

数据来源:通过录入一段音频文件,通过转换格式软件将.m4a 文件转换为.wav 文件编程语言:python实现功能:对语音信号进行时频域、小波域变换,截取变换后的部分信息进行重构。查看其压缩后的图像,并进行对比分析。

1. 音频信号时频域分析

1.1 时频域绘图

时域图,横坐标分别是信号长度与信号时间。由于自己录制的信号都是双声道(shape为 [N,2] 的数据),所以只取一个声道进行计算即可。 频域图: # 部分代码 plt.figure(figsize=(24,10)) plt.subplot(121) f = np.fft.fft(single_channel) fshift = np.abs(f) plt.plot(x, fshift) plt.subplot(122) fft_shift_copy = f.copy() points = 50000 fft_shift_copy[points:length-points] = 0 fft_shift_copy_plot = abs(fft_shift_copy) plt.plot(x, fft_shift_copy_plot)

1.2 进行频域的截取

通过观察图像可以截取左右对称各5w个值,得到如下对比图,左图为原频域图,右图为截取后的图像。

对其进行傅里叶反变换后得到下图,左图为原图像,右图为重构后的图像。

稀疏性: k = float(points*2 / length) k

2. 音频信号小波域分析

2.1 应用到二阶小波变换

采用 'db2' 滤波器,原图及重构后的图像 import pywt w = pywt.Wavelet('db2') print(db) maxlev = pywt.dwt_max_level(length, w.dec_len) print("maximum level is: "+str(maxlev)) threshold=0.04 #Threshold for filtering #Decompose into wavelet components,to the level selected: coffs=pywt.wavedec(single_channel,'db2',level=maxlev) #将信号进行小波分解 for i in range(1,len(coffs)): coffs[i]=pywt.threshold(coffs[i],threshold*max(coffs[i])) datarec=pywt.waverec(coffs,'db2')#将信号进行小波重构 plt.figure(figsize=(8, 4)) plt.subplot(211) plt.plot(x, single_channel) plt.title("Signal") plt.subplot(212) plt.plot(x, datarec) plt.title("Restructed signal by using wavelet techniques") plt.tight_layout() plt.show()

2.2 分频处理

分成高低频进行处理,打印出高低频信息

ca, cd = pywt.dwt(single_channel,'db2') # ca x_len = np.arange(len(ca)) plt.figure(figsize=(12,4)) plt.subplot(121) plt.title('HF') plt.plot(x_len, ca) plt.subplot(122) plt.title('LF') plt.plot(x_len, cd)

未处理时进行重构,得到的变换与原音频一样,将低频信息置为0,再进行重构,得到图像如下图

3. 实验分析与结论

通过时域图可以看到噪声与语音信号是不易分开的,因此我们可以借用其他域的图像进行分析,在进行压缩的时候可以去掉这些噪声信息,保留少量信息即可进行原语音信号的重构。首先是频域对其进行了分析,可以从图像直观的看出我们所需信息的存在范围,因此,我们可以取相应的部分频域点进行重构,按照图像将其部分频域点单独提取出来,进行傅里叶反变换,也能够实现原声音的复现。该方法可以有效进行声音的压缩与重构。通过小波域也可以将时域信号变成可以用少量有用信息表示的信号。

结论:在时域无法判断或进行有效分析的时候,可以通过其他域进行特征分析,如频域,小波域等变换域。如果信号在某一个正交空间具有稀疏性(即可压缩性),就能以较低的频率(远低于奈奎斯特采样频率)采样该信号,并可能以高概率精确的重建该信号(这句话要理解的话类同小波变换的正交基)。

最新回复(0)