赞
踩
信号处理是一门科学领域,涉及信号从时域到频域的处理,反之亦然,平滑信号,从信号中分离噪声,即过滤,从信号中提取信息。自然界中存在的信号都是连续信号。连续时间(或模拟)信号存在于连续间隔 ( t 1 , t 2 ) (\mathrm{t} 1, \mathrm{t} 2) (t1,t2) 范围从 − ∞ -\infty −∞ 到 + ∞ +\infty +∞。
模拟量转数字量
import numpy as np
import matplotlib.pyplot as plt
import scipy
from scipy import signal
t = np.arange(0, 11)
x = (0.85) ** t
连续信号
plt.figure(figsize = (10,8)) # set the size of figure # 1. Plotting Analog Signal plt.subplot(2, 2, 1) plt.title('Analog Signal', fontsize=20) plt.plot(t, x, linewidth=3, label='x(t) = (0.85)^t') plt.xlabel('t' , fontsize=15) plt.ylabel('amplitude', fontsize=15) plt.legend(loc='upper right') # 2. Sampling and Plotting of Sampled signal plt.subplot(2, 2, 2) plt.title('Sampling', fontsize=20) plt.plot(t, x, linewidth=3, label='x(t) = (0.85)^t') n = t markerline, stemlines, baseline = plt.stem(n, x, label='x(n) = (0.85)^n') plt.setp(stemlines, 'linewidth', 3) plt.xlabel('n' , fontsize = 15) plt.ylabel('amplitude', fontsize = 15) plt.legend(loc='upper right') # 3. Quantization plt.subplot(2, 2, 3) plt.title('Quantization', fontsize = 20) plt.plot(t, x, linewidth =3) markerline, stemlines, baseline=plt.stem(n,x) plt.setp(stemlines, 'linewidth', 3) plt.xlabel('n', fontsize = 15) plt.ylabel('Range of Quantizer', fontsize=15) plt.axhline(y = 0.1, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.2, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.3, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.4, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.5, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.6, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.7, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.8, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.9, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 1.0, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.subplot(2, 2, 4) plt.title('Quantized Signal', fontsize = 20) xq = np.around(x,1) markerline, stemlines, baseline = plt.stem(n,xq) plt.setp(stemlines, 'linewidth', 3) plt.xlabel('n', fontsize = 15) plt.ylabel('Range of Quantizer', fontsize=15) plt.axhline(y = 0.1, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.2, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.3, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.4, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.5, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.6, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.7, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.8, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 0.9, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.axhline(y = 1.0, xmin = 0, xmax = 10, color = 'r', linewidth = 3.0) plt.tight_layout()
单位脉冲信号
impulse = signal.unit_impulse(10, 'mid')
shifted_impulse = signal.unit_impulse(7, 2)
# Sine wave
t = np.linspace(0, 10, 100)
amp = 5 # Amplitude
f = 50
x = amp * np.sin(2 * np.pi * f * t)
# Exponential Signal
x_ = amp * np.exp(-t)
plt.figure(figsize=(10, 8)) plt.subplot(2, 2, 1) plt.plot(np.arange(-5, 5), impulse, linewidth=3, label='Unit impulse function') plt.ylim(-0.01,1) plt.xlabel('time.', fontsize=15) plt.ylabel('Amplitude', fontsize=15) plt.legend(fontsize=10, loc='upper right') plt.subplot(2, 2, 2) plt.plot(shifted_impulse, linewidth=3, label='Shifted Unit impulse function') plt.xlabel('time.', fontsize=15) plt.ylabel('Amplitude', fontsize=15) plt.legend(fontsize=10, loc='upper right') plt.subplot(2, 2, 3) plt.plot(t, x, linewidth=3, label='Sine wave') plt.xlabel('time.', fontsize=15) plt.ylabel('Amplitude', fontsize=15) plt.legend(fontsize=10, loc='upper right') plt.subplot(2, 2, 4) plt.plot(t, x_, linewidth=3, label='Exponential Signal') plt.xlabel('time.', fontsize=15) plt.ylabel('Amplitude', fontsize=15) plt.legend(fontsize=10, loc='upper right') plt.tight_layout()
正弦波
# Sine wave
n = np.linspace(0, 10, 100)
amp = 5 # Amplitude
f = 50
x = amp * np.sin(2 * np.pi * f * n)
# Exponential Signal
x_ = amp * np.exp(-n)
离散信号
plt.figure(figsize=(12, 8))
plt.subplot(2, 2, 1)
plt.stem(n, x, 'yo', label='Sine wave')
plt.xlabel('time.', fontsize=15)
plt.ylabel('Amplitude', fontsize=15)
plt.legend(fontsize=10, loc='upper right')
plt.subplot(2, 2, 2)
plt.stem(n, x_, 'yo', label='Exponential Signal')
plt.xlabel('time.', fontsize=15)
plt.ylabel('Amplitude', fontsize=15)
plt.legend(fontsize=10, loc='upper right')
傅里叶变换是分析信号的强大工具,可用于从音频处理到图像处理再到图像压缩的各个领域。傅里叶分析是研究如何将数学函数分解为一系列更简单的三角函数的领域。 傅立叶变换是该领域的一种工具,用于将函数分解为其分量频率。 换句话说,傅立叶变换是一种工具,可让您获取信号并查看其中每个频率的功率。 看看这句话中的重要术语:
下图是一些正弦波的频率和功率的直观演示:
高频正弦波的峰值比低频正弦波的峰值更接近,因为它们重复得更频繁。低功率正弦波的峰值比其他两个正弦波小。
傅立叶变换在许多应用中都很有用。 图像压缩使用傅立叶变换的变体来去除图像的高频分量。 语音识别使用傅里叶变换和相关变换从原始音频中恢复口语单词。
一般来说,如果您需要查看信号中的频率,则需要傅立叶变换。如果在时域处理信号很困难,那么使用傅立叶变换将其移至频域值得尝试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。