东方耀AI技术分享

标题: ti的sfcw信号1T1R加窗后解算距离维_matlab与python实现 [打印本页]

作者: 东方耀    时间: 2022-5-9 16:04
标题: ti的sfcw信号1T1R加窗后解算距离维_matlab与python实现




ti的sfcw信号1T1R加窗后解算距离维_matlab与python实现

# 加窗的作用:主峰周围的旁瓣变平缓 更好地提取出目标
# 加窗的坏处:幅值有所降低,SNR降低 主瓣展宽(距离分辨率下降)


  1. clear all;close all;clc;

  2. din_re=load("/media/jiang/AI_Data/DataSets/ZTR/ti_one_chirp_data/one_chirp_data_real.dat");
  3. din_im=load("/media/jiang/AI_Data/DataSets/ZTR/ti_one_chirp_data/one_chirp_data_imag.dat");

  4. % figure;subplot(2,1,1);plot(din_re);
  5. % subplot(2,1,2);plot(din_im);

  6. % 一共256个采样点,采样率为10MHz

  7. N=256; %采样点数
  8. Fs=10e6; %采样率
  9. B=768e6; %调频带宽
  10. k=30e12; %调频斜率
  11. c=3e8; %光速

  12. din=din_re+j*din_im;
  13. % figure;plot(abs(din));


  14. range_win = hamming(N); %加海明窗
  15. % range_win = 其他窗
  16. figure;plot(range_win);

  17. data=din.*range_win;
  18. figure;plot(abs(data));



  19. yy=fft(din);
  20. AY=abs(yy/N);
  21. f=Fs/(N-1)*(0:N-1);
  22. figure;plot(f,AY);
  23. title('FFTshift模值 未加窗');xlabel('频率/Hz');ylabel('幅值');

  24. yy=fft(data);
  25. AY=abs(yy/N);
  26. % f=Fs/(N-1)*(0:N-1);
  27. figure;plot(f,AY);
  28. title('FFTshift模值 加窗');xlabel('频率/Hz');ylabel('幅值');



  29. r=f*c/(2*k);
  30. % figure;plot(r,AY);
  31. % title('1D-FFT');xlabel('R/m');ylabel('幅值');



复制代码

  1. # -*- coding: utf-8 -*-
  2. __author__ = u'东方耀 微信:dfy_88888'
  3. __date__ = '2022/5/9 下午3:07'
  4. __product__ = 'PyCharm'
  5. __filename__ = '22_ti_sfcw_加窗处理'

  6. from scipy.fftpack import fft, ifft, fftshift
  7. from scipy.signal import findfreqs, find_peaks
  8. import numpy as np
  9. import scipy
  10. from scipy.signal import get_window
  11. import matplotlib.pyplot as plt
  12. import matplotlib.ticker as mticker
  13. from matplotlib.font_manager import FontProperties

  14. font_fname = "/usr/share/fonts/wps-office/simfang.ttf"
  15. font = FontProperties(fname=font_fname)

  16. # N=256; %采样点数
  17. N = 256
  18. # Fs=10e6; %采样率
  19. Fs = 10e6
  20. # B=768e6; %调频带宽
  21. B = 768e6
  22. # k=30e12; %调频斜率
  23. k = 30e12
  24. # c=3e8; %光速
  25. c = 3e8

  26. # ti的sfcw信号1T1R加窗后解算距离维_matlab与python实现

  27. din_re = np.loadtxt("/media/jiang/AI_Data/DataSets/ZTR/ti_one_chirp_data/one_chirp_data_real.dat")
  28. din_im = np.loadtxt("/media/jiang/AI_Data/DataSets/ZTR/ti_one_chirp_data/one_chirp_data_imag.dat")

  29. din = din_re + 1j * din_im

  30. # 矩形窗boxcar  hamming hann blackmanharris  blackman gaussian
  31. window_name = "blackmanharris"
  32. window = get_window(window_name, N)
  33. print("生成窗%s函数的序列:" % window_name, len(window), window[:3], window[-3:])

  34. # 进行加窗操作
  35. data = din * window

  36. # 线程调频的脉冲压缩 是进行 fft
  37. # f=Fs/(N-1)*(0:N-1);
  38. x_freq = np.arange(-N / 2, N / 2) * Fs / N
  39. print("频谱的x轴(这才是正确的):", len(x_freq))

  40. y_no_win_freq = fftshift(fft(din, N))
  41. y_add_win_freq = fftshift(fft(data, N))

  42. # 线性调频 f转距离range
  43. r = x_freq * c / (2 * k)

  44. plt.figure(figsize=(14, 12))
  45. plt.figure(1)
  46. plt.subplots_adjust(wspace=0, hspace=0.5)
  47. plt.subplot(3, 1, 1)
  48. plt.plot(np.abs(din))
  49. plt.title('时域(复信号abs)', fontproperties=font, fontsize=16)
  50. plt.xlabel('time/sample_num')

  51. plt.subplot(3, 1, 2)
  52. plt.plot(window)
  53. plt.title('窗函数=%s' % window_name, fontproperties=font, fontsize=16)
  54. plt.xlabel('time/sample_num')

  55. plt.subplot(3, 1, 3)
  56. plt.plot(np.abs(data))
  57. plt.title('时域(复信号abs)_加窗的', fontproperties=font, fontsize=16)
  58. plt.xlabel('time/sample_num')

  59. plt.figure(figsize=(14, 12))
  60. plt.figure(2)
  61. plt.subplots_adjust(wspace=0, hspace=0.5)
  62. plt.subplot(3, 1, 1)
  63. plt.plot(x_freq, np.abs(y_no_win_freq) / N)
  64. plt.title('未加窗%s信号的幅度谱(归一化)' % window_name, fontproperties=font, fontsize=16)
  65. plt.xlabel('freq')

  66. plt.subplot(3, 1, 2)
  67. plt.plot(x_freq, np.abs(y_add_win_freq) / N)
  68. plt.title('加窗%s信号的幅度谱(归一化)' % window_name, fontproperties=font, fontsize=16)
  69. plt.xlabel('freq')

  70. plt.subplot(3, 1, 3)
  71. plt.plot(r, np.abs(y_add_win_freq) / N)
  72. plt.title('加窗%s信号的1D-FFT(归一化)' % window_name, fontproperties=font, fontsize=16)
  73. plt.xlabel('distance(m)')

  74. plt.show()
复制代码











欢迎光临 东方耀AI技术分享 (http://www.ai111.vip/) Powered by Discuz! X3.4