用Python实现《合成孔径雷达成像——算法与实现》图3.4。
import matplotlib.pyplot as plt
import numpy as np
import math
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
T = 10e-6; # 信号持续时间
B = 10e6; # 信号带宽
K = B/T # 调频率
ratio = [1.4,1.2,1.0,0.8] # 过采样率
Num = len(ratio)
for ii in range(Num):
Fs = ratio[ii]*B # 采样频率
dt = 1/Fs # 采样间隔
N = math.ceil(T/dt) # 采样点数
t = np.arange((0-N/2)/N*T,(N-N/2)/N*T,dt) # 时间轴
st = np.exp(1j*math.pi*K*np.multiply(t, t)) #生成信号
Sf = np.fft.fftshift(np.fft.fft(np.fft.fftshift(st))) # FFT
Sf = np.fft.fft(st) # FFT
tt = np.linspace(0,N,N)
## 画图
plt.figure(1)
plt.subplot(Num,2,2*ii+1)
plt.plot(t*1e6,np.real(st))
plt.axis('tight')
plt.title('信号的实部')
plt.xlabel('时间(μs)')
plt.subplot(Num,2,2*ii+2)
plt.plot(tt,np.abs(Sf))
plt.axis('tight')
plt.title('频谱幅度')
plt.xlabel('频率(单元)')
plt.show()