西电电子信息系统综合实验三、四

每年每个班的实验题目会有些许不同,仅供参考。

​
%% 单频信号

%% 普通采样

clear,clc;
rng('default');
f0=10e6; %信号频率
tau=6e-6; %脉冲宽度
t0=4e-6; %脉冲产生时刻
fs=20*f0;
Ts=1/fs;
t_start=0; %开始时间 s
t_end=0.000009 ;%结束时间 s
t=t_start:Ts:t_end;
s=sqrt(2)*sin(2*pi*f0*(t-t0)+2*pi).*rect((t-t0)/tau); %生成脉冲信号
SNR=20; %dB
Pn=1/(10^(SNR/10)); %噪声功率
para=sqrt(Pn); %噪声标准差
x=s+para*randn(size(t));

figure;
plot(t*1e6,s,'r--');
title('单频脉冲信号','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
figure;
plot(t*1e6,x,'b');
title('单频脉冲信号+噪声','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;

fi=[1:length(t)]-ceil(length(t)/2); %离散化频点
f=fi/max(fi)*fs/2; %频率位置
Fx=fft(x);

figure;
plot(f/1e6,fftshift(abs(Fx)));
title('单载频频谱图');
xlabel('频率/Mhz','FontSize',14);
ylabel('幅值/V','FontSize',14);


%% 带通采样

M=3;
fs=4*f0/(2*M-1);
Ts=1/fs;
t=t_start:Ts:t_end;
s=sqrt(2)*sin(2*pi*f0*(t-t0)+2*pi*rand).*rect((t-t0)/tau); %生成脉冲信号,2*pi*rand如果去掉rand,则图像中一条路为0
Pn=1/(10^(SNR/10)); %噪声功率
para=sqrt(Pn); %噪声标准差
x=s+para*randn(size(t));

figure;
plot(t*1e6,s,'r--');
title('单频脉冲信号','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
figure;
plot(t*1e6,x,'b');
title('单频脉冲信号+噪声','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;

%低通滤波法
n=[0:length(s)-1];
oi=cos(2*pi*n*f0/fs); %产生本振信号
oq=sin(2*pi*n*f0/fs); %产生本振信号
%符号修正,中频信号与相参振荡信号相乘
I=x.*oi; %加噪声
Q=x.*oq;
Ir=s.*oi; %不加噪声
Qr=s.*oq;
h=fir1(60,0.1,'low');
I=imfilter(I,h);
Q=imfilter(Q,h);
Ir=imfilter(Ir,h);
Qr=imfilter(Qr,h);

figure;
plot(t*1e6,I,'r--');
title('单频脉冲信号(+噪声)LPF','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
hold on;
plot(t*1e6,Q,'b');
legend('I路','Q路');

figure;
plot(t*1e6,Ir,'r--');
title('单频脉冲信号(不加噪声) LPF','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
hold on;
plot(t*1e6,Qr,'b');
legend('I路','Q路');


%Bessel插值
n=[0:length(s)-1];
oi=cos(2*pi*n*f0/fs); %产生本振信号
oq=sin(2*pi*n*f0/fs); %产生本振信号
%符号修正,中频信号与相参振荡信号相乘
Ib=x.*oi; %加噪声
Qb=x.*oq;
Ibr=s.*oi; %不加噪声
Qbr=s.*oq;

ord=8;
for i=ord:2:length(I)-ord
    Ib(i)=[-5,49,-245,1225,1225,-245,49,-5]/2048*[Ib(i-7) Ib(i-5) Ib(i-3) Ib(i-1) Ib(i+1) Ib(i+3) Ib(i+5) Ib(i+7)]';
    Qb(i+1)=[-5,49,-245,1225,1225,-245,49,-5]/2048*[Qb(i-6) Qb(i-4) Qb(i-2) Qb(i) Qb(i+2) Qb(i+4) Qb(i+6) Qb(i+8)]';
end
for i=ord:2:length(I)-ord
    Ibr(i)=[-5,49,-245,1225,1225,-245,49,-5]/2048*[Ibr(i-7) Ibr(i-5) Ibr(i-3) Ibr(i-1) Ibr(i+1) Ibr(i+3) Ibr(i+5) Ibr(i+7)]';
    Qbr(i+1)=[-5,49,-245,1225,1225,-245,49,-5]/2048*[Qbr(i-6) Qbr(i-4) Qbr(i-2) Qbr(i) Qbr(i+2) Qbr(i+4) Qbr(i+6) Qbr(i+8)]';
end
figure;
plot(t*1e6,Ib,'r--');
title('单频脉冲信号(+噪声) Bessel插值','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
hold on;
plot(t*1e6,Qb,'b');
legend('I路','Q路');

figure;
plot(t*1e6,Ibr,'r--');
title('单频脉冲信号(不加噪声) Bessel插值','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
hold on;
plot(t*1e6,Qbr,'b');
legend('I路','Q路');


%% BPSK信号
clear,clc;
f0=10e6; %信号频率
tau=1e-6; %脉冲宽度,s
N=7; %一个码组中码片的个数为7
t0=2e-6; %脉冲产生时刻
code=[1,1,1,-1,-1,1,-1];
t_start=0; %开始时间 s
t_end=0.00001 ;%结束时间 s
M=3;
fs=4*f0/(2*M-1);
Ts=1/fs;
t=t_start:Ts:t_end;
s=zeros(1,round((t_end-t_start)*fs)+1); %round取整
for n=1:N
    s=s+code(n)*rect((t-t0-(n-1)*tau)/tau).*sin(2*pi*f0*(t-t0)+2*pi*rand);
end
SNR=5;
Pn=1/(10^(SNR/10)); %噪声功率
para=sqrt(Pn); %噪声标准差
x=s+para*randn(size(t));

fi=[1:length(t)]-ceil(length(t)/2);
f=fi/max(fi)*fs/2; %频率位置
Fx=fft(x);

figure;
plot(t*1e6,x,'b');
title('BPSK信号加噪声');
xlabel('时间/us',"FontSize",14);
ylabel('幅值/V',"FontSize",14);
grid on;

figure;
plot(t*1e6,s,'b');
title('BPSK信号不加噪声');
xlabel('时间/us',"FontSize",14);
ylabel('幅值/V',"FontSize",14);
grid on;

%低通滤波法
n=[0:length(s)-1];
oi=cos(2*pi*n*f0/fs); %产生本振信号
oq=sin(2*pi*n*f0/fs); %产生本振信号
%符号修正,中频信号与相参振荡信号相乘
I=x.*oi; %加噪声
Q=x.*oq;
Ir=s.*oi; %不加噪声
Qr=s.*oq;
h=fir1(60,0.1,'low');
I=imfilter(I,h);
Q=imfilter(Q,h);
Ir=imfilter(Ir,h);
Qr=imfilter(Qr,h);

figure;
plot(t*1e6,I,'r--');
title('BPSK脉冲信号(+噪声)LPF','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
hold on;
plot(t*1e6,Q,'b');
legend('I路','Q路');

figure;
plot(t*1e6,Ir,'r--');
title('BPSK脉冲信号(不加噪声) LPF','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
hold on;
plot(t*1e6,Qr,'b');
legend('I路','Q路');


%Bessel插值
n=[0:length(s)-1];
oi=cos(2*pi*n*f0/fs); %产生本振信号
oq=sin(2*pi*n*f0/fs); %产生本振信号
%符号修正,中频信号与相参振荡信号相乘
Ib=x.*oi; %加噪声
Qb=x.*oq;
Ibr=s.*oi; %不加噪声
Qbr=s.*oq;

ord=8;
for i=ord:2:length(I)-ord
    Ib(i)=[-5,49,-245,1225,1225,-245,49,-5]/2048*[Ib(i-7) Ib(i-5) Ib(i-3) Ib(i-1) Ib(i+1) Ib(i+3) Ib(i+5) Ib(i+7)]';
    Qb(i+1)=[-5,49,-245,1225,1225,-245,49,-5]/2048*[Qb(i-6) Qb(i-4) Qb(i-2) Qb(i) Qb(i+2) Qb(i+4) Qb(i+6) Qb(i+8)]';
end
for i=ord:2:length(I)-ord
    Ibr(i)=[-5,49,-245,1225,1225,-245,49,-5]/2048*[Ibr(i-7) Ibr(i-5) Ibr(i-3) Ibr(i-1) Ibr(i+1) Ibr(i+3) Ibr(i+5) Ibr(i+7)]';
    Qbr(i+1)=[-5,49,-245,1225,1225,-245,49,-5]/2048*[Qbr(i-6) Qbr(i-4) Qbr(i-2) Qbr(i) Qbr(i+2) Qbr(i+4) Qbr(i+6) Qbr(i+8)]';
end
figure;
plot(t*1e6,Ib,'r--');
title('BPSK脉冲信号(+噪声) Bessel插值','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
hold on;
plot(t*1e6,Qb,'b');
legend('I路','Q路');

figure;
plot(t*1e6,Ibr,'r--');
title('BPSK脉冲信号(不加噪声) Bessel插值','FontSize',14);
xlabel('时间/us','FontSize',14);
ylabel('幅值/V','FontSize',14);
grid on;
hold on;
plot(t*1e6,Qbr,'b');
legend('I路','Q路');

%% LFM匹配滤波
T=30e-6;%持续时宽
a=1/sqrt(T);%信号幅度
B=10e6;%信号带宽
k=B/T;%调频系数
fs=30e6;%采样频率

%%线性调频信号
t=-T/2:1/fs:T/2-1/fs;
N=length(t);
s=a*exp(j*pi*k*t.^2);%发射指数信号
% s=awgn(s,25,'measured');%加高斯白噪声
x=real(s);%取实信号

figure;
subplot(131);
plot(t*1e6,x);
xlabel('时间/μs');
ylabel('归一化幅度');
title('时域波形');

subplot(132);
S=fftshift(fft(s,N));
n=(-N/2:N/2-1)*fs/N;
plot(n*1e-6,abs(S)/max(abs(S)));
xlabel('频率/MHz');ylabel('归一化幅度');title('幅频响应');

subplot(133);
plot(n*1e-6,angle(S));
xlabel('频率/MHz');ylabel('相位');title('相频响应');

%%LFM脉压信号
t=0:1/fs:T-1/fs;
N=length(t);
s=zeros(1,2*N);
% s(1:N)=awgn(a*exp(j*pi*k*t.^2),25,'measured');%发射信号加高斯白噪声
s(1:N)=a*exp(j*pi*k*t.^2);
x=real(s);
s1=zeros(1,2*N);
s1(1:N)=a*exp(j*pi*k*t.^2);


figure;
subplot(311);
tx=(0:2*N-1)/fs*1e6;
plot(tx,x/max(x));
xlabel('时间/μs');ylabel('归一化幅度');title('线性调频信号');

h=zeros(1,2*N);
S1=fftshift(fft(s,N));
for t=0:N-1
    h(t+1)=conj(s1(N-t));
end
x=real(h);
subplot(312);
plot(tx,x/max(x));
xlabel('时间/μs');ylabel('归一化幅度');title('匹配滤波器');

y=conv(s,h);
y=y/max(y);
subplot(313);
tx=(0:length(y)-1)/fs*1e6;
plot(tx,abs(y));
xlabel('时间/μs');ylabel('归一化幅度');title('匹配滤波输出')

%
h=zeros(1,2*N);S1=fftshift(fft(s,N));
figure;
subplot(311);
plot((-N/2:N/2-1)/fs*1e6,abs(S1)/max(abs(S1)));
xlabel('频率/MHz');ylabel('归一化幅度');title('幅频响应');

for t=0:N-1
    h(t+1)=conj(s1(N-t));
end
H1=fftshift(fft(h,N));
subplot(312);
plot((-N/2:N/2-1)/fs*1e6,abs(H1)/max(abs(H1)));
xlabel('频率/MHz');ylabel('归一化幅度');title('幅频响应');

Y=S1.*H1;
subplot(313);
plot((-N/2:N/2-1)/fs*1e6,abs(Y)/max(abs(Y)));
xlabel('频率/MHz');ylabel('归一化幅度');title('幅频响应');


%% BPSK匹配滤波
clc
clear all
close all
T = 0.01;%采样时间
fs = 1e5;%采样率
t = 0:1/fs:(T-1/fs); % 采样点
N = length(t); % 采样点数

binary_code = '1000111001';
len_code = length(binary_code);
% 一个码元对应的脉冲长度
f_bpsk = 1000; % 频率1000Hz,周期1ms
T_bpsk = 1/f_bpsk;
A_bpsk = 15 ; % 幅值
t_mayuan = 0:1/fs:(T_bpsk-1/fs); % 一个码元所持续的时间内的采样点时刻
y_mayuan = A_bpsk*sin(2*pi*f_bpsk*t_mayuan); % 一个码元的波形,用于表示0
t_bpsk = 0:1/fs:(T_bpsk*len_code-1/fs);
s0 = [];
for i=1:len_code
    tmp = str2num(binary_code(i));
    if tmp == 0
        s0 = [s0,y_mayuan];
    end
    if tmp == 1
        s0 = [s0,-y_mayuan];
    end
end


%% BPSK信号加高斯白噪声 
s=s0+rand;%加高斯白噪声
x=real(s);%取实信号


figure(1);
subplot(311);
plot(t*1e6,x);
xlabel('时间/μs');
ylabel('归一化幅度');
title('时域波形');

subplot(312);
S=fftshift(fft(s,N));
n=(-N/2:N/2-1)*fs/N;
plot(n*1e-6,abs(S)/max(abs(S)));
xlabel('频率/MHz');ylabel('归一化幅度');title('幅频响应');

subplot(313);
plot(n*1e-6,angle(S));
xlabel('频率/MHz');ylabel('相位');title('相频响应');


%% BPSK脉冲压缩
t=0:1/fs:T-1/fs;
N=length(t);
s1=zeros(1,2*N);
s1(1:N)=s+rand;%发射信号加高斯白噪声
x=real(s1);
s2=zeros(1,2*N);
s2(1:N)=s0;

figure(2);
subplot(311);
tx=(0:2*N-1)/fs*1e6;
plot(tx,x/max(x));
xlabel('时间/μs');ylabel('归一化幅度');title('BPSK信号');

h=zeros(1,2*N);S1=fftshift(fft(s1,N));
figure(3);
subplot(311);
plot((-N/2:N/2-1)/fs*1e6,abs(S1)/max(abs(S1)));
xlabel('频率/MHz');ylabel('归一化幅度');title('幅频响应');

for t=0:N-1
    h(t+1)=conj(s2(N-t));
end
x=real(h);
figure(2);
subplot(312);
plot(tx,x/max(x));
xlabel('时间/μs');ylabel('归一化幅度');title('匹配滤波器');


H1=fftshift(fft(h,N));
figure(3);
subplot(312);
plot((-N/2:N/2-1)/fs*1e6,abs(H1)/max(abs(H1)));
xlabel('频率/MHz');ylabel('归一化幅度');title('幅频响应');

y=conv(s1,h);
y=y/max(y);
figure(2);
subplot(313);
tx=(0:length(y)-1)/fs*1e6;
plot(tx,abs(y));
xlabel('时间/μs');ylabel('归一化幅度');title('匹配滤波输出')

Y=S1.*H1;
figure(3);
subplot(313);
plot((-N/2:N/2-1)/fs*1e6,abs(Y)/max(abs(Y)));
xlabel('频率/MHz');ylabel('归一化幅度');title('幅频响应');


function y = rect(x, D)
% function y = rect(x, D)
if nargin == 1, D = 1;
    x = abs(x);
    y = double(x<D/2);
    y(x == D/2) = 0.5;
end
end

​

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值