武漢做商城網(wǎng)站建設(shè)寧波seo排名優(yōu)化哪家好
要點
- Python和MATLAB實現(xiàn)以下波形和模型模擬
- 以給定采樣率模擬正弦信號,生成給定參數(shù)的方波信號,生成給定參數(shù)隔離矩形脈沖,生成并繪制線性調(diào)頻信號。
- 快速傅里葉變換結(jié)果釋義:復(fù)數(shù)離散傅里葉變換、頻率倉和快速傅里葉變換移位,逆快速傅里葉變換移位,數(shù)值NumPy對比觀察FFT移位和逆FFT移位。
- 離散時域表示:余弦信號生成取樣,使用FFT頻域信號表示,使用FFT計算離散傅里葉變換DFT,獲得幅度譜并提取正確的相位譜,從頻域樣本重建時域信號。
- 功率譜密度:使用數(shù)值計算庫NumPy和科學(xué)計算包SciPy以及韋爾奇功率譜密度估計方法 繪制載波調(diào)制信號的功率譜密度。
- 信號功率:生成的 10 個正弦波周期并繪圖,使用數(shù)值庫NumPy計算信號功率,使用科學(xué)計算包SciPy計算頻域中總功率。
- 信號中多項式:SciPy計算托普利茨矩陣
- 信號卷積計算方法:暴力方法計算卷積矢量,托普利茨矩陣方法,快速傅里葉變換方法,對比不同方法計算結(jié)果。
- 使用頻域方法生成分析信號,研究分析信號的組成部分,使用傅立葉變換進行希爾伯特變換:演示從實值調(diào)制信號構(gòu)造的分析信號中提取瞬時幅度和相位,演示使用希爾伯特變換簡單的相位解調(diào)。
- 使用二元相移鍵控調(diào)制傳入二元流的函數(shù),解調(diào)二元相移鍵控信號,使用二元相移鍵控調(diào)制的信息傳輸波形模擬生成。
- 差分編碼和差分解碼波形模擬生成
- 差分編碼二元相移鍵控調(diào)制解調(diào)模擬波形
- 使用正交相移鍵控調(diào)制傳入的二元流模擬波形,解調(diào)正交相移鍵控模擬波形
- 偏移正交相移鍵控調(diào)制解調(diào)模擬波形
- 差分編碼偏移正交相移鍵控調(diào)制解調(diào)相位映射器和調(diào)制解調(diào)
信號處理Python示例
信號處理是一門科學(xué)領(lǐng)域,涉及信號從時域到頻域的處理,反之亦然,平滑信號,從信號中分離噪聲,即過濾,從信號中提取信息。自然界中存在的信號都是連續(xù)信號。連續(xù)時間(或模擬)信號存在于連續(xù)間隔 ( t 1 , t 2 ) (\mathrm{t} 1, \mathrm{t} 2) (t1,t2) 范圍從 ? ∞ -\infty ?∞ 到 + ∞ +\infty +∞。
模擬量轉(zhuǎn)數(shù)字量
- 采樣:采樣是將連續(xù)時間信號還原為離散時間信號。一個常見的例子是將聲波(連續(xù)信號)轉(zhuǎn)換為樣本序列(離散時間信號)
- 量化:量化是將輸入值從大集合(通常是連續(xù)集合)映射到(可數(shù))較小集合(通常具有有限數(shù)量的元素)中的輸出值的過程。 路由和截斷是量化過程的典型示例。
- 編碼:對每個樣本進行量化并確定每個樣本的位數(shù)后,可以將每個樣本變?yōu)閚b位碼字。每個樣本的位數(shù)由量化級別的數(shù)量確定。
import numpy as np
import matplotlib.pyplot as pltimport scipy
from scipy import signal
t = np.arange(0, 11)
x = (0.85) ** t
連續(xù)信號
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 = tmarkerline, 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')
傅里葉變換
傅里葉變換是分析信號的強大工具,可用于從音頻處理到圖像處理再到圖像壓縮的各個領(lǐng)域。傅里葉分析是研究如何將數(shù)學(xué)函數(shù)分解為一系列更簡單的三角函數(shù)的領(lǐng)域。 傅立葉變換是該領(lǐng)域的一種工具,用于將函數(shù)分解為其分量頻率。 換句話說,傅立葉變換是一種工具,可讓您獲取信號并查看其中每個頻率的功率。 看看這句話中的重要術(shù)語:
- 信號是隨時間變化的信息。例如,音頻、視頻和電壓跡線都是信號的示例。
- 頻率是某事物重復(fù)的速度。例如,時鐘以一赫特 (Hz) 的頻率滴答,或每秒重復(fù)一次。
- 在這種情況下,功率僅指每個頻率的強度。
下圖是一些正弦波的頻率和功率的直觀演示:
高頻正弦波的峰值比低頻正弦波的峰值更接近,因為它們重復(fù)得更頻繁。低功率正弦波的峰值比其他兩個正弦波小。
傅立葉變換在許多應(yīng)用中都很有用。 圖像壓縮使用傅立葉變換的變體來去除圖像的高頻分量。 語音識別使用傅里葉變換和相關(guān)變換從原始音頻中恢復(fù)口語單詞。
一般來說,如果您需要查看信號中的頻率,則需要傅立葉變換。如果在時域處理信號很困難,那么使用傅立葉變換將其移至頻域值得嘗試。