clc
clear all
close all
%参数设置
TBP = 100; %时间带宽积
T = 10e-6; %脉冲持续时间
%参数计算
B = TBP/T; %信号带宽
K = B/T; %信号调频频率
alpha_os = 8; %过采样率
F = alpha_os*B; %采样率
N = 2*ceil(F*T/2); %采样点数
dt = T/N; %采样时间间隔
df = F/N; %采样频率间隔
%变量设置
t = -T/2:dt:T/2-dt; %时间变量
f = -F/2:df:F/2-df; %频率变量
t_out = linspace(2*t(1),2*t(end),2*length(t)-1); %循环卷积后的信号长度
%信号表达
st = exp(1j*pi*K*t.^2); %chirp信号复数表达式
ht = conj(fliplr(st)); %时域匹配滤波器表达式
s_out = conv(st,ht); %匹配滤波器输出信号表达式
s_out = s_out/max(s_out); %归一化
%绘图
figure
plot(t_out*1e+6,real(s_out))
axis([-1 1,-0.4 1.2]),xlabel('时间(\mus)')
1. ht = conj(fliplr(st));
返回 Zc
= conj(Z)Z
中每个元素的复共轭。
B = fliplr(A)
返回 A
,围绕垂直轴按左右方向翻转其各列。如果 A
是一个行向量,则 fliplr(A)
返回一个相同长度的向量,其元素的顺序颠倒。如果 A
是一个列向量,则fliplr(A)
只返回 A
。对于多维数组,fliplr
作用于由第一个和第二个维度构成的平面。
匹配滤波器时域表达式为时间反褶后s(t)的复共轭
2. t_out = linspace(2*t(1),2*t(end),2*length(t)-1);
MATLAB中的conv函数对K+M-1个输出点进行计算,其中K为信号长度,M为滤波器长度,t_out = linspace(2*t(1),2*t(end),2*length(t)-1)为循环卷积后的信号长度