|
ti的sfcw信号1T1R加窗后解算距离维_matlab与python实现
# 加窗的作用:主峰周围的旁瓣变平缓 更好地提取出目标
# 加窗的坏处:幅值有所降低,SNR降低 主瓣展宽(距离分辨率下降)
- clear all;close all;clc;
- din_re=load("/media/jiang/AI_Data/DataSets/ZTR/ti_one_chirp_data/one_chirp_data_real.dat");
- din_im=load("/media/jiang/AI_Data/DataSets/ZTR/ti_one_chirp_data/one_chirp_data_imag.dat");
- % figure;subplot(2,1,1);plot(din_re);
- % subplot(2,1,2);plot(din_im);
- % 一共256个采样点,采样率为10MHz
- N=256; %采样点数
- Fs=10e6; %采样率
- B=768e6; %调频带宽
- k=30e12; %调频斜率
- c=3e8; %光速
- din=din_re+j*din_im;
- % figure;plot(abs(din));
- range_win = hamming(N); %加海明窗
- % range_win = 其他窗
- figure;plot(range_win);
- data=din.*range_win;
- figure;plot(abs(data));
- yy=fft(din);
- AY=abs(yy/N);
- f=Fs/(N-1)*(0:N-1);
- figure;plot(f,AY);
- title('FFTshift模值 未加窗');xlabel('频率/Hz');ylabel('幅值');
- yy=fft(data);
- AY=abs(yy/N);
- % f=Fs/(N-1)*(0:N-1);
- figure;plot(f,AY);
- title('FFTshift模值 加窗');xlabel('频率/Hz');ylabel('幅值');
- r=f*c/(2*k);
- % figure;plot(r,AY);
- % title('1D-FFT');xlabel('R/m');ylabel('幅值');
复制代码
- # -*- coding: utf-8 -*-
- __author__ = u'东方耀 微信:dfy_88888'
- __date__ = '2022/5/9 下午3:07'
- __product__ = 'PyCharm'
- __filename__ = '22_ti_sfcw_加窗处理'
- from scipy.fftpack import fft, ifft, fftshift
- from scipy.signal import findfreqs, find_peaks
- import numpy as np
- import scipy
- from scipy.signal import get_window
- import matplotlib.pyplot as plt
- import matplotlib.ticker as mticker
- from matplotlib.font_manager import FontProperties
- font_fname = "/usr/share/fonts/wps-office/simfang.ttf"
- font = FontProperties(fname=font_fname)
- # N=256; %采样点数
- N = 256
- # Fs=10e6; %采样率
- Fs = 10e6
- # B=768e6; %调频带宽
- B = 768e6
- # k=30e12; %调频斜率
- k = 30e12
- # c=3e8; %光速
- c = 3e8
- # ti的sfcw信号1T1R加窗后解算距离维_matlab与python实现
- din_re = np.loadtxt("/media/jiang/AI_Data/DataSets/ZTR/ti_one_chirp_data/one_chirp_data_real.dat")
- din_im = np.loadtxt("/media/jiang/AI_Data/DataSets/ZTR/ti_one_chirp_data/one_chirp_data_imag.dat")
- din = din_re + 1j * din_im
- # 矩形窗boxcar hamming hann blackmanharris blackman gaussian
- window_name = "blackmanharris"
- window = get_window(window_name, N)
- print("生成窗%s函数的序列:" % window_name, len(window), window[:3], window[-3:])
- # 进行加窗操作
- data = din * window
- # 线程调频的脉冲压缩 是进行 fft
- # f=Fs/(N-1)*(0:N-1);
- x_freq = np.arange(-N / 2, N / 2) * Fs / N
- print("频谱的x轴(这才是正确的):", len(x_freq))
- y_no_win_freq = fftshift(fft(din, N))
- y_add_win_freq = fftshift(fft(data, N))
- # 线性调频 f转距离range
- r = x_freq * c / (2 * k)
- plt.figure(figsize=(14, 12))
- plt.figure(1)
- plt.subplots_adjust(wspace=0, hspace=0.5)
- plt.subplot(3, 1, 1)
- plt.plot(np.abs(din))
- plt.title('时域(复信号abs)', fontproperties=font, fontsize=16)
- plt.xlabel('time/sample_num')
- plt.subplot(3, 1, 2)
- plt.plot(window)
- plt.title('窗函数=%s' % window_name, fontproperties=font, fontsize=16)
- plt.xlabel('time/sample_num')
- plt.subplot(3, 1, 3)
- plt.plot(np.abs(data))
- plt.title('时域(复信号abs)_加窗的', fontproperties=font, fontsize=16)
- plt.xlabel('time/sample_num')
- plt.figure(figsize=(14, 12))
- plt.figure(2)
- plt.subplots_adjust(wspace=0, hspace=0.5)
- plt.subplot(3, 1, 1)
- plt.plot(x_freq, np.abs(y_no_win_freq) / N)
- plt.title('未加窗%s信号的幅度谱(归一化)' % window_name, fontproperties=font, fontsize=16)
- plt.xlabel('freq')
- plt.subplot(3, 1, 2)
- plt.plot(x_freq, np.abs(y_add_win_freq) / N)
- plt.title('加窗%s信号的幅度谱(归一化)' % window_name, fontproperties=font, fontsize=16)
- plt.xlabel('freq')
- plt.subplot(3, 1, 3)
- plt.plot(r, np.abs(y_add_win_freq) / N)
- plt.title('加窗%s信号的1D-FFT(归一化)' % window_name, fontproperties=font, fontsize=16)
- plt.xlabel('distance(m)')
- plt.show()
复制代码
|
|