前言
MATLAB在R2013a版本中引入Nakagami分布对象,可以用来生成Nakagami随机变量。但是在更早的MATLAB版本中,并没有可以直接生成 Nakagami分布的随机变量的内置的函数。另外,为了深入理解Nakagami分布,有必要研究Nakagami分布的随机变量的生成方法。本文和上一篇文章将给出使用伽马分布生成Nakagami分布随机变量的两种方法。
一、使用伽马分布生成Nakagami分布随机变量的方法二
上一篇文章(17)MATLAB使用伽马(gamma)分布生成Nakagami-m分布的方法1给出了第一种方法。另外,也可以将两个伽马分布的随机变量平方并相加,得到 Nakagami 分布的随机变量。
和复高斯随机变量仿真瑞利衰落信道一样,这种方法可以很方便地生成复伽马分布的随机变量仿真Nakagami衰落信道。
下面给出使用方法二生成Nakagami分布随机变量的MATLAB代码。
二、MATLAB代码
使用伽马分布生成Nakagami分布随机变量的MATLAB代码如下:
clc
clear all
close all
%% 方法二:将两个伽马分布的随机变量平方并相加,得到 Nakagami 分布的随机变量
% Nakagami 分布的参数
m = 1;
Omega = 2;
nakagami_m = m; % Nakagami分布的形状参数
nakagami_Omega = Omega; % Nakagami分布的尺度参数
% 伽马分布的参数
gamma_shape = nakagami_m / 2; % 伽马分布的形状参数
gamma_scale = nakagami_Omega / 2; % 伽马分布的尺度参数
% 生成伽马分布的随机变量
N = 10000; % 随机变量的数量
X1 = gamrnd(gamma_shape, gamma_scale, N, 1);
X2 = gamrnd(gamma_shape, gamma_scale, N, 1);
% 将两个伽马分布的随机变量平方并相加,得到 Nakagami 分布的随机变量
X_nakagami = sqrt(X1.^2 + X2.^2);
figure()
histogram(X,nbins,'Normalization','pdf','DisplayStyle','bar');
%% nakagami分布的概率密度的理论值
% Nakagami分布的参数
m = 1;
Omega = 2;
% nakagami分布的概率密度的理论表达式
x = 0.01:0.01:3;
f = (2*m.^m./(gamma(m).*Omega^m)) .* x.^(2*m-1) .* exp(-m*x.^2./Omega);
% figure()
plot(x,f,'LineWidth',1.5)
title('Nakagami分布的概率密度')
legend('概率密度函数的估计值','概率密度函数的理论值')