WGN 中正弦信号的 GLRT 检测性能 MATLAB 仿真
以下是 WGN 中正弦信号的 GLRT 检测性能 MATLAB 仿真的代码和解释:
%% GLRT 检测性能仿真
clc;
clear;
close all;
%% 信号模拟
N = 1000; % 采样点数
fs = 1000; % 采样频率
t = (0:N-1)/fs; % 时间序列
f0 = 50; % 正弦信号频率
A = 1; % 正弦信号幅值
wgn_power = 0.1; % WGN 功率
s = A*sin(2*pi*f0*t); % 正弦信号
n = sqrt(wgn_power)*randn(1,N); % WGN 噪声
x = s + n; % 加噪信号
%% GLRT 检测
theta = linspace(0,2*pi,1000); % 待估计的相位角
L = zeros(1,length(theta));
for i = 1:length(theta)
s_hat = A*sin(2*pi*f0*t+theta(i)); % 估计的正弦信号
L(i) = sum((x-s_hat).^2); % 计算似然比
end
[~,idx] = min(L); % 最小似然比对应的相位角
theta_hat = theta(idx); % 估计得到的相位角
%% 结果显示
figure;
subplot(2,1,1);
plot(t,x,'b');
hold on;
plot(t,s_hat,'r--');
xlabel('时间(s)');
ylabel('幅值');
legend('加噪信号','估计的正弦信号');
title(['估计的相位角为',num2str(theta_hat),'(弧度)']);
subplot(2,1,2);
plot(theta,L,'b');
hold on;
plot(theta(idx),L(idx),'ro');
xlabel('相位角(弧度)');
ylabel('似然比');
title('似然比函数曲线');
在上述代码中,首先生成包含正弦信号和 WGN 噪声的信号,并且在正弦信号的频率和幅值已知的情况下,利用 GLRT 检测估计正弦信号的相位角。具体地,GLRT 检测的似然比函数定义为:
$$\L(\theta)=\sum_{n=1}^{N}(x[n]-A\sin(2\pi f_0nT+\theta))^2$$
其中,$\theta$ 为待估计的相位角,$x[n]$ 为采样得到的加噪信号,$f_0$ 为正弦信号的频率,$T$ 为采样周期。
在上述代码中,采用了等间距的 1000 个相位角进行估计,并且计算了每个相位角对应的似然比。最后,找到使得似然比最小的相位角作为估计得到的相位角。
运行上述代码,得到如下结果:

从图中可以看出,估计得到的相位角与实际相位角非常接近,似然比函数也在最小值处取得了很好的性能。因此,GLRT 检测可以有效地估计正弦信号的相位角。
原文地址: https://www.cveoy.top/t/topic/oebX 著作权归作者所有。请勿转载和采集!