please help me to solve the issue:
2 次查看(过去 30 天)
显示 更早的评论
clear all
clc
%-----Simulation Parameters-----%
Bmax=2000000; %maximum available bandwidth for OFDMA
noise=1e-9; %fixed noise power is assumed
p_fix=0.01; %fixed transmit power is assumed
N_UE=[10 20 30 40 50];
N_SC=[60 70 80 90 100];
for it=1:2
for t= 1:length(N_UE)
%-----Topology-----%
Xmax=1; % x-coordinate for base station
Ymax=1; % y-coordinate for base station
radius=5; %coverage radius
xsd=ones(1,N_UE(t))*Xmax;
ysd=ones(1,N_UE(t))*Ymax;
rrx=radius*sqrt(rand(1,N_UE(t)));
thetarx=2*pi*rand(1,N_UE(t));
ang=0:0.01:2*pi;
xrx=xsd+rrx.*cos(thetarx); %random position of receivers-->x-coordinate
yrx=ysd+rrx.*sin(thetarx); %random position of receivers-->x-coordinate
th = 0:pi/100:2*pi;
xunit = radius * cos(th) + Xmax;
yunit = radius * sin(th) + Ymax;
% figure
% plot(xunit, yunit);
% hold on
% plot(ysd,xsd,'r^')
% hold on
% plot(yrx,xrx,'ko')
% hold on
%-----Subcarrier Correlation Matrix-----%
ratio=0.1; %Td over Tb: delay spread relative to OFDM frame duration
c=2*pi*ratio;
for r = 1:length(N_SC)
for j=1:N_UE(t)
temp=[];
for n=1:N_SC(r)
nc=(n-1)*c;
entry=(1+i*nc)/(1+nc^2);
temp=[temp entry];
end
Rchan=toeplitz(temp);
%autocorrelation matrix
[E,L]=eig(Rchan);
SQRTL=sqrt(L);
A=E*SQRTL/sqrt(2);
GG=randn(N_SC(r), 1)+i*randn(N_SC(r),1);
H=A*GG;
HH=abs(H);
% figure
% plot(abs(H))
% hold on
for k=1:N_SC(r)
F(j,k)=HH(k);
end
end
%-----Subcarrier Gain-----%
as=4;
bs=10;
Lsigma=as+(bs-as)*rand(1,N_UE(t));
Lshadow=10.^(randn(1,N_UE(t)).*(Lsigma/10));
ae=3;
be=5;
Lexp=ae+(be-ae)*rand(1,N_UE(t));
for k=1:N_SC(r)
for j=1:N_UE(t)
dist2(j)=sqrt((xrx(j)-xsd(j))^2+(yrx(j)-ysd(j))^2);
G(j,k)=(F(j,k)*Lshadow(j))/dist2(j).^Lexp(j);
end
end
%subcarrier allocation to users%
siz = size(G);
idx = sub2ind(siz, randi([1,N_UE(t)], 1, siz(2)), 1:siz(2));
C = zeros(siz);
C(idx) = G(idx);
D=sum(C,2);
% Throughput performance %
throughput =((Bmax.*log(1+((p_fix).*C))./noise));
overall_throughput = sum(sum(throughput));
output(t,r)=overall_throughput;
output_it(t,r,it)=output(t,r);
% figure
% plot(overall_throughput,'b','linewidth',2);
% legend(['No.of subcarriers=' num2str(N_SC(r))])
% xlabel('No of users')
% ylabel('overall_throughput')
% axis square
% grid on
end
end
end
out = sum(output_it,3);
final = out./2;
%Group formation%
N_G=5;%No of group
B = cell(N_G,1);
sumB = cell(N_G,1);
for d=1:1:N_G
if d==1
e=randi([1 5],1)% select No of UE randomly
else
sz=length(C(:,1));
e=randi([1 sz],1)% select No of UE randomly
end
idx=randsample(1:size(C,1),e)
B{d} = C(idx,:)
% C(idx,:) = [];
[rows, columns] = size(B{d});
% Get sum of columns and replicate vertically.
sumB{d} = repmat(sum(B{d},1), [rows, 1]);
end
E=[sumB{1}; sumB{2};sumB{3};sumB{4};sumB{5}];
The code gets execueted. But the size of the array in the command line
E=[sumB{1}; sumB{2};sumB{3};sumB{4};sumB{5}]
command is not same as the input (50,100).Could anybody help me solve this issue.
2 个评论
Stephen23
2017-12-22
"But the size of the array in the command line... is not same as the input (50,100)"
Why should it be? You use randsample to pick a random number of rows.
John D'Errico
2017-12-23
Will you please stop asking the identical question multiple times? You asked this question twice. That is one reason you have asked now 117 questions, Almost all of them have been asked at least twice.
回答(1 个)
ANKUR KUMAR
2017-12-22
You have used
randsample(1:size(C,1),e)
in between of the program. Just because of this, you are getting F of different dimensions.
3 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Numeric Types 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!