📄 lfm_iq.m
字号:
%%%参数设置%%%
clc,clear,clf,close all
fs=1.2e9; %采样频率为1.2G
Ts=1/fs;
fi=900e6; %中频为900M
B=500e6; %带宽为500M
%%%输入线性调频信号%%%
T=1e-6; %脉宽为1微秒
K=B/T;
N=fix(T*fs); %取T*fs的整数部分,表示1个脉宽里采多少数。N=1200
for i=-fix(N/2):fix(N/2)-1
s(i+N/2+1)=exp(j*(pi*(B/T)*(i/fs)^2+2*i*pi*fi/fs))+0.1*rand; %*exp(j*2*pi*750e6);
end
figure(1);
plot(s);
title('线性调频信号')
figure(2);
subplot(2,2,1);
plot(real(s));
title('线性调频信号实部')
subplot(2,2,2);
plot(imag(s));
title('线性调频信号虚部')
subplot(2,2,3);
plot(abs(s));
title('线性调频信号模值')
subplot(2,2,4);
plot(abs(fft(s)));
title('线性调频信号频域')
%FIR滤波器设计。
c=27; %定义滤波器的阶数为28阶,用滤波器工具箱计算得到。优化的程序滤波器的阶数为25阶。
fc=250e6; %截至频率
wn=2*fc/fs; %截止频率除以奈奎斯特频率为归一化的频率
b = fir1(c,wn);
figure(3);
freqz(b,1,512);
title('FIR滤波器的幅频响应')
%%%%%%对输入的信号进行处理______方法一%%%%%%
%信号分两路一路乘以(1,0,-1,0),一路乘以(0,1,0,-1)。
d=[1,0,-1,0];
d1=repmat(d,1,300);
d2=diag(d1);
si1=s*d2;
figure(4);
subplot(2,1,1);
plot(abs(fft(si1))); %第i路信号
title('方法一,提取i路信号')
e=[0,1,0,-1];
e1=repmat(e,1,300);
e2=diag(e1);
sq1=s*e2;
subplot(2,1,2);
plot(abs(fft(sq1))); %第q路信号
title('方法一,提取q路信号')
%两路信号通过低通滤波器。
for i=1:1172 %对si缓存。每次取28个,头1个不要,尾加1个组成下一个。然后进行滤波。
for j=1:28
xinhao1(i,j)=si1(i+j-1);
end
end
for i=1:1172
si2(i)=xinhao1(i,:)*b';
end
si3 = fft(si2,1024);
si4= abs(si3);
figure(5);
subplot(2,1,1);
plot(si4); %第i路信号
title('方法一,i路信号低通滤波后的结果')
for i=1:1172 %对si缓存。每次取28个,头1个不要,尾加1个组成下一个。然后进行滤波。
for j=1:28
xinhao2(i,j)=sq1(i+j-1);
end
end
for i=1:1172
sq2(i)=xinhao2(i,:)*b';
end
sq3 = fft(sq2,1024);
sq4= abs(sq3);
subplot(2,1,2);
plot(sq4); %第q路信号
title('方法一,q路信号低通滤波后的结果')
%%%%%%对输入的信号进行处理______方法二%%%%%%
%首先把输入信号分为四路,每路300个信号。
for m=1:N/4
ii1 = (m-1)*4+1;
s1(m)=s(ii1); %第一路信号
end
for m=1:N/4
ii2 = (m-1)*4+2;
s2(m)=s(ii2); %第二路信号
end
for m=1:N/4
ii3 = (m-1)*4+3;
s3(m)=s(ii3); %第三路信号
end
for m=1:N/4
ii4 = m*4;
s4(m)=s(ii4); %第四路信号
end
%滤波器系数分为四组
for k=1:7
k1=(k-1)*4+1;
b1(k)=b(k1); %第一路滤波器系数
end
for k=1:7
k2=(k-1)*4+2;
b2(k)=b(k2); %第二路滤波器系数
end
for k=1:7
k3=(k-1)*4+3;
b3(k)=b(k3); %第三路滤波器系数
end
for k=1:7
k4=k*4;
b4(k)=b(k4); %第四路滤波器系数
end
%%%%%%不做滤波处理%%%%%%
%i路信号
for p=1:1200
p1=rem(p,4);
p2=fix(p/4);
switch p1
case 1
signal(p)=s1(p2+1);
case 2
signal(p)=0;
case 3
signal(p)=s3(p2+1)*(-1);
otherwise 0
signal(p)=0;
end
end
figure(6)
subplot(2,1,1);
plot(abs(fft(signal)));
title('方法二,提取i路信号')
%q路信号
for q=1:1200
q1=rem(q,4);
q2=fix(q/4);
switch q1
case 1
signal2(q)=0;
case 2
signal2(q)=s2(q2+1);
case 3
signal2(p)=0;
otherwise 0
signal2(q)=s4(q2)*(-1);
end
end
subplot(2,1,2);
plot(abs(fft(signal2)));
title('方法二,提取q路信号')
%%%%%%对信号进行滤波%%%%%%
%对si1缓存。每次取31个,头4个不要,尾加4个组成下一个。然后进行滤波。
for i=1:293
for j=1:31
xinhao(i,j)=si1((i-1)*4+j);
end
end
for i=1:293
for m=1:28
xin1(i,m)=xinhao(i,m);
xin2(i,m)=xinhao(i,m+1);
xin3(i,m)=xinhao(i,m+2);
xin4(i,m)=xinhao(i,m+3);
end
end
for i=1:293
result1(i)=xin1(i,:)*b';
result2(i)=xin2(i,:)*b';
result3(i)=xin3(i,:)*b';
result4(i)=xin4(i,:)*b';
end
for f=1:1172
f1=rem(f,4);
f2=fix(f/4);
switch f1
case 1
result_i(f)=result1(f2+1);
case 2
result_i(f)=result2(f2+1);
case 3
result_i(f)=result3(f2+1);
otherwise 0
result_i(f)=result4(f2);
end
end
figure(7)
subplot(2,1,1);
plot(abs(fft(result_i,1024)));
title('方法二,i路信号通过低通滤波器后的结果')
%sq1缓存。每次取31个,头4个不要,尾加4个组成下一个。然后进行滤波。
for i=1:293
for j=1:31
xinhao(i,j)=sq1((i-1)*4+j);
end
end
for i=1:293
for m=1:28
xin1(i,m)=xinhao(i,m);
xin2(i,m)=xinhao(i,m+1);
xin3(i,m)=xinhao(i,m+2);
xin4(i,m)=xinhao(i,m+3);
end
end
for i=1:293
result1(i)=xin1(i,:)*b';
result2(i)=xin2(i,:)*b';
result3(i)=xin3(i,:)*b';
result4(i)=xin4(i,:)*b';
end
for f=1:1172
f1=rem(f,4);
f2=fix(f/4);
switch f1
case 1
result_q(f)=result1(f2+1);
case 2
result_q(f)=result2(f2+1);
case 3
result_q(f)=result3(f2+1);
otherwise 0
result_q(f)=result4(f2);
end
end
subplot(2,1,2);
plot(abs(fft(result_q,1024)));
title('方法二,q路信号通过低通滤波器后的结果')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -