% =======================================================================
% #######################################################################
% 文件名: signalAnalysis.m
% 创建日期: 2017.8.21
% 创建人: xiaop
% 功能概述: 测量信道多途扩展
% #######################################################################
% =======================================================================
clc;
clear;
close all;
% -----------------------------------------------------
% 加载采集信号
fs = 48e3; % 采样率 (Hz)
filename = 't4m_r1_4m_300ms.mat';
titlename = 't_{4m}r_{1\_4m}T_{300ms}';
load(filename);
% -----------------------------------------------------
% 采集信号参数
siglen = size(sigout, 2); % 信号长度
Num_frame = size(sigout, 1); % 信号帧数
T_len = siglen/fs; % 信号脉宽
% -----------------------------------------------------
% 生成参考信号
T_lfm = 100e-3; % 信号脉宽 (s)
lfm_fl = 9e3; % lfm频率下限 (Hz)
lfm_fh = 15e3; % lfm频率上限 (Hz)
lfm_t = (0:T_lfm*fs-1)/fs; % 时间轴
lfm_sig = chirp(lfm_t, lfm_fl, T_lfm, lfm_fh); % 参考信号
% -----------------------------------------------------
% 生成低通滤波系数
Wn = 12e3/fs;
lpf_order = 128;
bb = fir1(lpf_order, Wn);
% -----------------------------------------------------
% 初始化信道估计输出
channel_est = zeros(Num_frame, siglen);
% -----------------------------------------------------
for k = 1:Num_frame
signow = sigout(k, :);
correlation = xcorr(signow, lfm_sig);
correlation = abs(correlation(length(signow)-length(lfm_sig)+1:length(signow)-length(lfm_sig)+siglen));
envelop = conv(correlation, bb); % 匹配相关包络
envelop = envelop(65:end-64);
envelop_t = (0:length(envelop)-1)/fs*1000;
channel_est(k, :) = envelop;
end
% -----------------------------------------------------
% 绘制信道估计结果
figure(1);
tt = (0:Num_frame-1)*T_len;
tao = (0:siglen-1)/fs*1000;
imagesc(tao, tt, channel_est);
% xlim([105 125]);
xlabel('\fontsize{12}\bf时延(ms)');
ylabel('\fontsize{12}\bf时间(s)');
title(['\fontsize{14}\bf', titlename, '信道冲激响应']);
% -----------------------------------------------------
% 绘制信道估计结果2
figure(2);
plot(tao, channel_est);
xlabel('\fontsize{12}\bf时延(ms)');
ylabel('\fontsize{12}\bf幅度(V)');
title(['\fontsize{14}\bf', titlename, '信道冲激响应']);
% -----------------------------------------------------
% 绘制信道估计结果3
figure(3);
mesh(tao, tt, channel_est);
% surf(tao, tt, channel_est);
xlabel('\fontsize{12}\bf时延(ms)');
ylabel('\fontsize{12}\bf时间(s)');
title(['\fontsize{14}\bf', titlename, '信道冲激响应']);
% -----------------------------------------------------
% 绘制信道估计结果4
figure(4);
plot(tao, channel_est(1,:));
xlabel('\fontsize{12}\bf时延(ms)');
ylabel('\fontsize{12}\bf幅度(V)');
title(['\fontsize{14}\bf', titlename, '信道冲激响应']);
% -----------------------------------------------------