每年每个班的实验题目会有些许不同,仅供参考。
%% 单频信号
%% 普通采样
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