%*******************************************************************************%
% %
% ------- Discontinuous Nakagami-m simulator for arbitrary m ------ %
% %
% By Giuseppe Thadeu Freitas de Abreu, 2006 (All rights reserved) %
% Center for Wireless Communnications, University of Oulu %
% %
%*******************************************************************************%
function [Naka,f1,f2] = DiscontinuousNakagami(m,Omega,Nsp,Nfr)
% This program generates piecewise-continuous Nakagami-m variates specified by:
% OBS: If f1 and f2 are called, envelope and phase distributions are also generated
% -------------------------------------------------------
%
% m : Vector of m-parameters
% Omega : Vector of Omega-parameters
% Nsp : Number of samples
% Tch : Coherence time of the channel
% Tsb : Symbol duration (sampling period)
% Nrd : Number of randoms used in the sum of sinusoids
%
% -------------------------------------------------------
% Examples:
% 1) To generate 100 frames of 50 samples of a Nakagami-m chanel
% with m = 1.35 and unitary power, type:
% < Naka = PiecewiseContinuousNakagami(1.35,1,50,100); >
% 2) To see also the distributions of the channel described, type, e.g.:
% < [Naka,f1,f2] = PiecewiseContinuousNakagami(1.35,1,500,10000); >
% OBS: Accurate distributions plots require a substantial amount of samples!
M = length(m);
mL = floor(2*m)/2;
mU = mL + 0.5;
p = 2*mL.*(mU-m)./m;
testm = (floor(mL) == mL);
for m_index = 1:M,
if testm(m_index),
mI(m_index) = mL(m_index);
mH(m_index) = mU(m_index);
else
mI(m_index) = mU(m_index);
mH(m_index) = mI(m_index);
end
end
% Standard deviation of variates with interger m
sigmaI = sqrt(Omega./(2*mI));
Naka = [];
% Standard deviation of variates with half-interger m
for m_index = 1:M,
if mH(m_index) == 0.5,
sigmaH(m_index) = sqrt(Omega(m_index)./(2*mH(m_index)))
else
sigmaH(m_index) = sqrt(Omega(m_index)./(floor(mH(m_index))+ceil(mH(m_index))));
end
Naka_m = [];
for frame = 1:Nfr,
testp(m_index) = (rand <= p(m_index));
if (testm(m_index) & testp(m_index))|(~testm(m_index) & ~testp(m_index)), % Selection of variates with integer m
% Variates with integer m
X = sigmaI(m_index)*randn(mI(m_index),Nsp);
Y = sigmaI(m_index)*randn(mI(m_index),Nsp);
SignX = (2*randint-1);
SignY = (2*randint-1);
NakaFr = (SignX*sqrt(sum(X.^2,1)) + j*SignY*sqrt(sum(Y.^2,1))).*exp(j*randint(1,1,[0 3])*pi/2);
else
% Variates with half-integer m
if mH == 0.5,
% Case wehere m = 0.5 (Real gaussian variates)
NakaFr = sigmaH(m_index)*randn(1,Nsp).*exp(j*randint(1,1,[0 3])*pi/2);
else
% Case wehere m > 0.5 (Gamma variates)
X = sigmaH(m_index)*randn(ceil(mH(m_index)),Nsp);
Y = sigmaH(m_index)*randn(ceil(mH(m_index))-1,Nsp);
SignX = (2*randint-1);
SignY = (2*randint-1);
NakaFr = (SignX*sqrt(sum(X.^2,1)) + j*SignY*sqrt(sum(Y.^2,1))).*exp(j*randint(1,1,[0 3])*pi/2);
end
end
Naka_m = [Naka_m NakaFr];
end
Naka = [Naka; Naka_m];
end
% --- Envelope Distributions ---
if nargout >= 2,
close all
MarkerString = {'x','+','o','v','s','d','^','p'};
MarkerSize = [10 ,8 ,8 ,8 ,8 ,8 ,8 ,10 ];
Nbins = 49;
figure(1)
hold on
grid on
box on
% Ploting auxiliary data for Legend
LegendLabels = {'Exact'};
plot(-10,-10,'k','LineWidth',1.5);
for m_index = 1:M,
plot(-10,-10,[char(MarkerString(m_index)) 'k-'],'MarkerSize',MarkerSize(m_index),'MarkerFaceColor','w','LineWidth',1);
LegendLabels(m_index+1) = {['m = ' num2str(m(m_index)) '; \Omega = ' num2str(Omega(m_index))]};
end
for m_index = 1:M,
% Histogram of Nakagami envelope distribution
NakaEnv = abs(Naka(m_index,:));
[Henv,Xenv,Lenv,Uenv(m_index)] = Histogram(NakaEnv,Nbins);
[XnormEnv,YnormEnv(m_index)] = NakaEnvelopePeak(m(m_index),Omega(m_index));
Henv = Henv*YnormEnv(m_index)/max(Henv);
% Plotting simulated and theoretical distributions
HtheoEnv = NakagamiEnvelopeDistribution(m(m_index),Omega(m_index),Xenv);
plot(Xenv,Henv,[char(MarkerString(m_index)) 'k-'],'MarkerSize',MarkerSize(m_index),'MarkerFaceColor','w','LineWidth',1);
plot(Xenv,HtheoEnv,'k','LineWidth',1.5);
end
top = ceil(10*max(YnormEnv))/10;
axis([0 max(Uenv) 0 top]);
h=get(gcf,'CurrentAxes');
set(h,'FontSize',12,'XTick',[0:0.5:max(Uenv)],'YTick',[0:0.1:top]);
xlabel('Envelope: |Z|','FontSize',12);
ylabel('p_{|Z|}(z)','FontSize',12);
title('Nakagami-{\it m} Envelope Distribution','FontSize',14,'pos',[3,1.01*top]);
h = legend(LegendLabels,1);
set(h,'FontSize',12);
FileName = ['NakagamiEnvDistribution'];
print('-deps2',[FileName '.eps']);
f1=figure(1);
saveas(f1,[FileName '.fig']);
end
% --- Envelope Distributions ---
if nargout == 3,
TtheoPhase = (0:0.0005:0.5)*pi*4;
for m_index = 1:M,
RtheoPhase(m_index,:) = NakagamiPhaseDistribution(m(m_index),TtheoPhase);
RtheoPhaseL = NakagamiPhaseDistribution(mL(m_index),TtheoPhase);
RtheoPhaseU = NakagamiPhaseDistribution(mU(m_index),TtheoPhase);
RmixPhase(m_index,:) = RtheoPhaseL*p(m_index) + (1-p(m_index))*RtheoPhaseU;
end
XnormPhase = pi/4; % Peak for m > 1, valley for m <= 1
Nbins = 79;
for m_index= 1:M,
% Histogram of Nakagami phase distribution
NakaPhase = angle(Naka(m_index,:));
[T,R] = rose(NakaPhase,Nbins);
Tphase = T(2:4:end);
Rphase(m_index,:) = R(2:4:end);
r1 = floor((1-0.9)*pi*Nbins/2) + 1;
r2 = floor((1-0.6)*pi*Nbins/2) + 1;
YnormPhase = gamma(m(m_index))*(abs(sin(2*XnormPhase)).^(m(m_index)-1))/((2^m(m_index))*gamma(m(m_index)/2)^2);
if m(m_index) >=1,
Rphase(m_index,:) = Rphase(m_index,:)*YnormPhase/max(Rphase(m_index,r1:r2)); % Peak at pi/4
else
if min(Rphase(m_index,r1:r2)) > 0,
Rphase(m_index,:) = Rphase(m_index,:)*YnormPhase/min(Rphase(m_index,r1:r2)); % Valley at pi/4
end
end
end
figure(2)
mmpolar(TtheoPhase,RtheoPhase,'-k',TtheoPhase,RmixPhase,':k',Tphase,Rphase,'--k','RLimit',[0 0.4],'RTickAngle',37.5,'RTickOffset',0.07);
annotation('arrow',[0.52,0.8],[0.52,0.895]);
text(0.85,0.8,'m > 1','FontSize',14,'FontName','courier');
h=get(gcf,'CurrentAxes');
set(h,'FontSize',12,'FontName','courier');
xlabel('');
ylabel('');
title('Nakagami-{\itm} Phase pdf (Mixture Method)','FontSize',14,'pos',[0,1.11],'FontName','courier');
FileName = ['NakagamiPhaseDistribution'];
print('-deps2',[FileName '.eps']);
f2=figure(2);
saveas(f2,[FileName '.fig']);
end
% --------------------------------------------------------------------------------
%
% Below are functions used to construct the envelope distribution plots
%
% --------------------------------------------------------------------------------
function [Xpeak,Ypeak] = NakaEnvelopePeak(m,Omega)
Xpeak = sqrt(Omega*(1-0.5/m));
if Xpeak == 0,
Ypeak = (2/gamma(m))*(m/Omega)^m;
else
Ypeak = NakagamiEnvelopeDistribution(m,Omega,Xpeak);
end
% -------------------------------------------------------------------
没有合适的资源?快使用搜索试试~ 我知道了~
MATLAB.rar_cdama_nakagami_nakagami m
共184个文件
m:119个
asv:62个
mat:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 78 浏览量
2022-09-24
20:38:19
上传
评论
收藏 164KB RAR 举报
温馨提示
this sbout soyrce cdama using matlab
资源推荐
资源详情
资源评论
收起资源包目录
MATLAB.rar_cdama_nakagami_nakagami m (184个子文件)
Untitled21.asv 8KB
fig111.asv 5KB
Untitled7.asv 4KB
fig_n016.asv 4KB
COBA4.asv 4KB
coba2.asv 4KB
Untitled6.asv 4KB
fig_no16147.asv 3KB
sim_sicnakastagecobaa.asv 3KB
fig_no16.asv 3KB
sim_sicnakastage.asv 3KB
fig_no1614.asv 3KB
fig_no1.asv 3KB
sim_sicnaka.asv 3KB
cobagoldcode63.asv 3KB
sim_sicnakauser5.asv 3KB
sim_sicnakauser8.asv 3KB
sim_sicnakano.asv 3KB
sim_siccobain.asv 3KB
sim_sicnaka3.asv 3KB
sim_sicnaka1.asv 3KB
sim_sicnaka5.asv 3KB
sim_sicgold127.asv 3KB
sim_sic.asv 3KB
Nakagami2.asv 2KB
sim_sic7.asv 2KB
sim_sic2.asv 2KB
fig_no1612.asv 2KB
fig_no161.asv 2KB
Nakagami.asv 2KB
sim_sicCOBa.asv 2KB
ber_naka32.asv 2KB
sinarnew.asv 2KB
Untitled5.asv 2KB
usersatu16.asv 2KB
fungsiawgn.asv 1KB
Utamanaka127.asv 1KB
utamanaka.asv 1KB
inputdata.asv 1KB
Untitled8.asv 1022B
utamauser.asv 799B
Transmitter.asv 751B
Utamagc127.asv 736B
gold.asv 585B
utamacoba.asv 517B
Untitled.asv 513B
gold.asv 506B
Utama63.asv 498B
utamauser31.asv 492B
Untitled2.asv 490B
rayleigh.asv 480B
utama10.asv 459B
pembangkitan gold code.asv 411B
utama.asv 379B
pembangkitan m sequences.asv 378B
m_sequences.asv 378B
awgn_chan.asv 373B
goldcode31.asv 308B
naka_chan.asv 293B
input_symbols.asv 286B
m_seq.asv 255B
m_seq.asv 238B
untitled.fig 8KB
DiscontinuousNakagami.m 53KB
Untitled5.m 6KB
Estimasi_multipath.m 4KB
Untitled7.m 4KB
COBA4.m 4KB
Untitled21.m 4KB
coba2.m 4KB
Untitled6.m 4KB
demodulation.m 4KB
sim_sicnakastage1.m 3KB
sim_sicnakastagecobaa.m 3KB
sim_sicnakatahap.m 3KB
fig_no16145.m 3KB
fig_no16147.m 3KB
sim_sicnakastage.m 3KB
fig_no1614.m 3KB
fig_no16.m 3KB
fig_no1.m 3KB
fig_stage16.m 3KB
sim_sicnakauser10.m 3KB
sim_sicnakauser8.m 3KB
sim_sicgold127.m 3KB
sim_sicnaka5.m 3KB
sim_sicgold31.m 3KB
sim_sicgold63.m 3KB
sim_sicnakano.m 3KB
sim_sicnakauser5.m 3KB
sim_sicgold63coba.m 3KB
sim_sicnaka3.m 3KB
sim_siccobain2.m 3KB
sim_siccobain.m 3KB
sim_sicnaka6.m 3KB
sim_sicnakaa.m 3KB
sim_sicnaka4.m 3KB
sim_sicnaka2.m 3KB
sim_sicnaka.m 3KB
sim_sicnaka1.m 3KB
共 184 条
- 1
- 2
资源评论
APei
- 粉丝: 64
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功