【限免】HFM雷达信号及模糊函数MATLAB代码

微信公众号:EW Frontier QQ交流群:949444104

HFM信号

HFM 信号表达式:

式中:T 为脉冲宽度,b = -k / f1 f2 为信号的调频参数,k = B / T 为对应的线性调频斜率,B 为信号带宽,f0 为波形中心频率,f1 = f0 -B / 2 为下限频率,f2 =f0 +B / 2 为上限频率。

仿真结果:

clc
clear
close all
​
%%Hfm
fc=12.5e3;
​
fs=5*fc;
ts=1/fs;
N=450;
T=(1/fs)*N;
​
B=6000;
fmax=fc/(1-B/(2*fc));
fmin=fc/(1+B/(2*fc));
bw=fmax-fmin;
t0=fc*N*ts/B;
K=N*ts*fmax*fmin/B;
W=B*N*ts;
t=(-(N-1)/2:1:(N-1)/2).'*ts;
x0=exp(-1i*(2*pi*K*log(1-t/t0)));
m=bw/T;
v=9;
c=1500;
D=1+2*v/c;
ft=fc./(1-(m/fc).*t);
ftr=fc*D./(1-(m/fc).*D*t);
​
figure(1)
plot(t,ft,t,ftr);
grid on
tr=((-(N-1)/2:1:(N-1)/2).'+50)*ts;
xr=exp(-1i*(2*pi*K*log(1-tr/t0)));
​
prf=100;
L=round((1/prf)/ts);
​
x=zeros(L,1);
x(1:1:N,1)=x0;
[afmag,delay,doppler]=ambgfun(x,fs,prf);
ambgu=afmag.*(afmag>0.5);
figure(2)
% contour(delay,doppler,afmag,'ShowText','on');
mesh(delay,doppler,afmag);
xlim([-8e-3,8e-3]);
ylim([-6600,6600]);
xlabel('Delay (second)');
ylabel('Doppler Shift (hertz)');
colormap jet;
colorbar;
grid on
​
figure(3)
contour(delay,doppler,ambgu);
xlim([-8e-3,8e-3]);
ylim([-7600,7600]);
xlabel('Delay (second)');
ylabel('Doppler Shift (hertz)');
colormap jet;
colorbar
grid on
​
%%
afmag_T0=afmag(1025,:);
afmag_f0=afmag(:,625);
​
figure(4)
plot(delay*1000,afmag_T0);
xlabel('Delay (ms)');
ylabel('Amplitude');
grid on
xlim([-2 2]);
ylim([0 1]);
hold on
hline=refline(0,0.7);
hline.Color='r';
hline.LineStyle='--';
hline.LineWidth=1.2;
plot([-0.44/bw -0.44/bw]*1000,[0 1],'r--','LineWidth',1.2);
​
figure(5)
plot(doppler,afmag_f0);
xlabel('Doppler Shift (hertz)');
ylabel('Amplitude');
xlim([-3/T 3/T]);
ylim([0 1]);
grid on
hold on
hline=refline(0,0.7);
hline.Color='r';
hline.LineStyle='--';
hline.LineWidth=1.2;
plot([-0.44/T -0.44/T]*1000,[0 1],'r--','LineWidth',1.2);
​
%%signal
tx=(0:1:L-1)*ts*1000;
figure(6)
subplot(2,1,1)
plot(t,real(x0));
ylim([-1.1 1.1]);
xlabel('Time/ms');
ylabel('Amplitude');
grid on
​
subplot(2,1,2)
nfft=2^nextpow2(450);
fre=(0:1:nfft/2)*fs/nfft/1000;
fftr=fft(x(1:450,1),nfft);
plot(fre,abs(fftr(1:1:nfft/2+1,1)));
xlabel('Frequency/kHz');
ylabel('Amplitude');
grid on
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HFM(Hyperbolic Frequency Modulation)双曲调频是一种调制方式,它与传统的线性调频(LFM)类似,但其频率变化与时间的关系不是线性的,而是遵循双曲线函数。在MATLAB中,可以通过编写特定的代码来实现HFM信号的生成和处理。 为了生成HFM信号,我们通常需要定义初始频率、结束频率、脉冲宽度和采样率等参数。以下是一个简单的MATLAB代码示例,用于生成HFM信号: ```matlab % HFM信号生成参数 f0 = 0; % 初始频率(Hz) f1 = 1000; % 结束频率(Hz) T = 10e-3; % 脉冲宽度(s) fs = 100e3; % 采样率(Hz) t = 0:1/fs:T-1/fs; % 时间向量 % HFM信号计算 m = (f1 - f0) / T; % 频率变化率 k = m / fs^2; % 双曲调制系数 k = round(k * (length(t) - 1)); % 确保k为整数 % 生成HFM信号 hfm_signal = zeros(1, length(t)); for i = 1:length(t) if k * t(i)^2 <= (m * t(i) - f0) hfm_signal(i) = sqrt((m * t(i) - f0) / k); else hfm_signal(i) = 0; end end hfm_signal = hfm_signal .* exp(1j * 2 * pi * (f0 * t + k * t.^3 / 3 + (m - f0) * t.^2 / 2)); % 绘制HFM信号 figure; plot(real(hfm_signal)); title('HFM信号实部'); xlabel('时间'); ylabel('幅度'); ``` 这段代码首先定义了HFM信号的参数,然后计算了双曲调制系数,并生成了一个时间向量。接着,代码中使用了一个循环来计算每个时间点上的HFM信号值。最后,绘制了HFM信号的实部。 请注意,上述代码是一个基础示例,实际应用中可能需要考虑更多的因素,比如信号的窗函数处理、频谱分析等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值