东方耀AI技术分享
标题:
ti的sfcw信号1T1R加窗后解算距离维_matlab与python实现
[打印本页]
作者:
东方耀
时间:
2022-5-9 16:04
标题:
ti的sfcw信号1T1R加窗后解算距离维_matlab与python实现
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()
复制代码
欢迎光临 东方耀AI技术分享 (http://www.ai111.vip/)
Powered by Discuz! X3.4