信号幅值归一化(Python)

本文主要实现将一维时序数据进行幅值归一化

1. 导包

import numpy as np
import math

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

2. 自定义函数

# 一维时序信号赋值归一化
def normalized(origin_signal):
  y = origin_signal - np.mean(origin_signal)  # 消除直流分量
  y = y / np.max(np.abs(y))  # 幅值归一化
  return y

3. 完整代码

import numpy as np
import math
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

# 一维时序信号赋值归一化
def normalized(origin_signal):
  y = origin_signal - np.mean(origin_signal)  # 消除直流分量
  y = y / np.max(np.abs(y))  # 幅值归一化
  return y
  
data = [1,2,4,3,5,2,7,5,2,6,5,9,10,2,5,4,3]
origin_signal = np.array(data)

normalized_data = normalized(origin_signal)

plt.plot(origin_signal)
legend = "原始数据"
plt.legend(legend)
plt.show()

plt.plot(normalized_data)
legend = "幅值归一化"
plt.legend(legend)
plt.show()

4. 效果展示

原始信号:
信号幅值归一化(Python)_第1张图片
幅值归一化信号:
信号幅值归一化(Python)_第2张图片

你可能感兴趣的:(Python,python)