Python实现《合成孔径雷达成像——算法与实现》图3.6和图3.7

用Python实现《合成孔径雷达成像——算法与实现》图3.6和图3.7。
在这里插入图片描述加窗(Kaiser窗)处理
加入高斯随机噪声

import matplotlib.pyplot as plt
import numpy as np
import math
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False    #用来正常显示负号
#信号持续时间T=7.24us,信号带宽B=5.8MHz,将过采样率设为10
T = 7.24e-6                 # 信号持续时间
B = 5.8e6                   # 信号带宽
K = B/T                     # 调频率
ratio = 10                  # 过采样率
Fs = ratio*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))      #生成信号
ht = np.conj(st)      # 匹配滤波器
out = np.fft.fftshift(np.fft.ifft(np.multiply(np.fft.fft(st),np.fft.fft(ht))))
Z = np.abs(out)
Z = Z/max(Z)
Z = 20*np.log10(np.finfo(np.float64).eps+Z)


## 画图
plt.figure(1)
plt.subplot(2,2,1)
plt.title('(a)输入阵列信号的实部')
plt.plot(t*1e6,np.real(st))
plt.ylabel('幅度')

plt.subplot(2,2,2)
plt.title('(c)压缩后的信号(经扩展)')
#plt.axis([-1,1,-30,0])
plt.plot(t*1e6,Z)
plt.ylabel('幅度(dB)')

plt.subplot(2,2,3)
plt.title('(b)压缩后的信号')
plt.plot(t*1e6,out)
plt.xlabel('相对于$\mathregular{t_0}$''时间(μs)')
plt.ylabel('幅度')

plt.subplot(2,2,4)
plt.title('(d)压缩后信号的相位(经扩展)')
#plt.axis([-1,1,-5,5])
plt.plot(t*1e6,np.abs(np.angle(out)))
plt.xlabel('相对于$\mathregular{t_0}$''时间(μs)')
plt.ylabel('相位(弧度)')

plt.show()
#加窗减小旁瓣
window=np.kaiser(N, 2.5)#典型值β=2.5见书P60
ht_window = np.multiply(window,np.conj(st))   #时域加窗匹配滤波器

Sf =  np.fft.fftshift( np.fft.fft( np.fft.fftshift(st)))
Hf =  np.fft.fftshift( np.fft.fft( np.fft.fftshift(ht)))

Hf_window = np.fft.fftshift(np.fft.fft(np.fft.fftshift(ht_window)))

out = np.fft.ifftshift(np.fft.ifft(np.fft.ifftshift(np.multiply(Sf,Hf))))
out_window = np.fft.ifftshift(np.fft.ifft(np.fft.ifftshift(np.multiply(Sf,Hf_window))))


Z1 = np.abs(out)
Z1 = Z1/max(Z1)
Z1 = 20*np.log10(Z1)

Z2 = np.abs(out_window)
Z2 = Z2/max(Z2);
Z2 = 20*np.log10(Z2)

tt = np.linspace(-0.5,0.5,N)
plt.figure(2)
plt.subplot(2,2,1)
plt.title('脉冲压缩之后的信号(未加窗)')
plt.plot(tt,out)
plt.ylabel('幅度')

plt.subplot(2,2,2)
plt.title('脉冲压缩之后的信号(未加窗)')
plt.axis([-0.3,0.3,-35,0])
plt.plot(tt,Z1)
plt.ylabel('幅度(dB)')

plt.subplot(2,2,3)
plt.title('脉冲压缩之后的信号(加窗)')
plt.plot(tt,out_window)
plt.xlabel('时间(归一化后)')
plt.ylabel('幅度')

plt.subplot(2,2,4)
plt.title('脉冲压缩之后的信号(加窗)')
plt.axis([-0.3,0.3,-35,5])
plt.plot(tt,Z2)
plt.xlabel('时间(归一化后)')
plt.ylabel('幅度(dB)')

plt.show()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值