⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lfm_iq.m

📁 matlab实现线性调频信号的i路和Q路分解
💻 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 + -