利用杜芬振子提取线性调频信号的脉冲宽度matlab
时间: 2023-11-02 07:59:52 浏览: 84
线性调频信号的matlab源码
下面是一个利用杜芬振子提取线性调频信号的脉冲宽度的示例 Matlab 代码:
```matlab
% 设置仿真参数
fs = 1e6; % 采样频率
t = 0:1/fs:1e-3-1/fs; % 时间向量
f0 = 10e3; % 起始频率
f1 = 50e3; % 终止频率
T = 1/f0; % 周期
K = (f1-f0)/T; % 调频斜率
% 生成线性调频信号
s = chirp(t, f0, t(end), f1);
% 用杜芬振子提取脉冲宽度
fc = (f0 + f1)/2; % 杜芬振子中心频率
bw = f1 - f0; % 杜芬振子带宽
[b, a] = butter(5, bw/fs); % 低通滤波器设计
x = s .* cos(2*pi*fc*t); % 乘上杜芬振子的载波信号
y = filter(b, a, x); % 低通滤波
z = abs(y); % 取幅值
[pks, locs] = findpeaks(z); % 找到峰值
pw = diff(locs)/fs; % 计算脉冲宽度
% 绘制结果
subplot(2,1,1);
plot(t, s);
xlabel('时间 (s)');
ylabel('幅值');
title('线性调频信号');
subplot(2,1,2);
plot(t, z);
hold on;
plot(t(locs), pks, 'r.');
xlabel('时间 (s)');
ylabel('幅值');
title('杜芬振子输出');
```
代码中首先生成一个从 10 kHz 到 50 kHz 的线性调频信号,然后乘上一个中心频率为调频信号起始和终止频率的平均值、带宽为终止频率和起始频率之差的杜芬振子。对乘积信号进行低通滤波并取幅值后,找到其中的峰值并计算相邻两个峰值之间的时间差,即为脉冲宽度。最后绘制出原始调频信号和杜芬振子输出的幅度图像。
阅读全文