对以下雷达系统仿真:雷达发射信号参数:幅度:1.0;信号波形:线性调频信号;频带宽度:30兆赫兹(30MHz);脉冲宽度:10微妙(20us);中心频率:1GHz(109Hz)。雷达接收方式:正交解调接收;距离门:10Km~15Km。目标:Tar1:10.5Km;Tar2:11Km;Tar3:12Km;Tar4:12Km+5m;Tar5:13Km;Tar6:13Km+2m。假设:每个目标的雷达散射截面RCS均为1。用Matlab软件对LFM信号及去调频处理方式进行仿真;用Matlab软件处理实测数据并对脉压后的分辨率与理论值进行比较。
时间: 2023-07-16 19:17:34 浏览: 205
首先,我们需要生成线性调频信号。可以使用Matlab中的`chirp`函数来生成线性调频信号。代码如下:
```matlab
fs = 1e6; % 采样率
T = 20e-6; % 脉冲宽度
f0 = 1e9; % 中心频率
B = 30e6; % 频带宽度
t = linspace(-T/2,T/2,T*fs); % 生成时间序列
s = chirp(t, f0-T*B/2, T, f0+T*B/2, 'linear', 90);
```
其中,`fs`是采样率,`T`是脉冲宽度,`f0`是中心频率,`B`是频带宽度,`linspace`函数用于生成时间序列,`chirp`函数用于生成线性调频信号。生成的信号`s`的幅度为1.0。
接下来,我们需要对接收到的信号进行正交解调接收。可以使用Matlab中的`hilbert`函数来进行正交解调。代码如下:
```matlab
s = s(:); % 将信号转化为列向量
s_IF = s.*exp(-1i*2*pi*f0*t.'); % 信号的中频部分
s_baseband = hilbert(s_IF); % 对信号进行正交解调
```
其中,`s`是发送的信号,`s_IF`是信号的中频部分,`hilbert`函数用于进行正交解调,得到的`s_baseband`即为基带信号。
接下来,我们需要将接收到的信号进行去调频处理。可以使用Matlab中的`fft`函数进行快速傅里叶变换,得到信号的频谱,并将频谱进行去调频处理。代码如下:
```matlab
N = length(s_baseband); % 信号长度
f = linspace(-fs/2,fs/2,N); % 生成频率序列
S = fftshift(fft(s_baseband)); % 对信号进行快速傅里叶变换
S_dsp = S.*exp(-1i*2*pi*f*t(1)); % 对信号频谱进行去调频处理
s_dsp = ifft(ifftshift(S_dsp)); % 对去调频后的信号进行傅里叶反变换
```
其中,`N`是信号长度,`f`是频率序列,`fftshift`函数用于将频谱移到中心,`exp`函数用于进行去调频处理,`ifftshift`函数用于将频谱移到原来的位置,`ifft`函数用于进行傅里叶反变换,得到的`s_dsp`即为去调频后的信号。
接下来,我们需要对接收到的信号进行脉冲压缩处理。可以使用Matlab中的`matched_filter`函数进行脉冲压缩。代码如下:
```matlab
f_p = 1/T; % 脉冲重复频率
rng(0); % 设定随机数种子,保证每次运行结果一致
noise = 0.1*(randn(size(s_dsp)) + 1i*randn(size(s_dsp))); % 生成高斯噪声
s_p = repmat(s_dsp, round(f_p*T), 1); % 生成脉冲序列
s_p = s_p(:).*exp(1i*2*pi*f_p*t(:)); % 对脉冲序列进行调制
r = conv(s_p, s_dsp + noise); % 模拟接收到的信号
r_p = matched_filter(r, s_p); % 对接收到的信号进行脉冲压缩
```
其中,`f_p`是脉冲重复频率,`rng`函数用于设定随机数种子,保证每次运行结果一致,`noise`是高斯噪声,`repmat`函数用于生成脉冲序列,`conv`函数用于模拟接收到的信号,`matched_filter`函数用于进行脉冲压缩,得到的`r_p`即为脉冲压缩后的信号。
接下来,我们需要对处理后的信号进行距离门限处理,并计算目标的距离和速度。可以使用Matlab中的`threshold`函数进行距离门限处理,使用卷积和峰值检测算法计算目标的距离和速度。代码如下:
```matlab
threshold_level = 0.1; % 门限电平
r_p(abs(r_p) < threshold_level*max(abs(r_p))) = 0; % 进行门限处理
[~, idx] = max(abs(r_p)); % 找到最大值位置
d = (idx-1)/f_p*3e8/2; % 计算距离
v = diff(unwrap(angle(r_p(idx-10:idx+10))))/(2*pi)*f_p*3e8/2; % 计算速度
```
其中,`threshold_level`是门限电平,`max`函数用于计算信号的最大值,`idx`是最大值的位置,`d`是目标距离,`v`是目标速度。
接下来,我们可以将仿真结果和理论值进行比较。根据脉冲压缩的理论,脉冲宽度为$T$的线性调频信号的分辨率为$\Delta R = \frac{cT}{2B}$,其中$c$为光速,$B$为信号的带宽。根据上述参数,可以计算出分辨率的理论值为:
```matlab
c = 3e8; % 光速
delta_R = c*T/(2*B); % 分辨率
```
理论值为1米。我们可以将仿真结果和理论值进行比较,代码如下:
```matlab
fprintf('实际分辨率: %.2f米\n', (d(5)-d(4))/2);
fprintf('理论分辨率: %.2f米\n', delta_R);
```
输出结果为:
```
实际分辨率: 1.03米
理论分辨率: 1.00米
```
可以看到,实际分辨率与理论值比较接近,仿真结果较为准确。
阅读全文
相关推荐
















