I am facing problem regarding storage of values for d() using for loop which is of 100x100 size for each iteration of a and k.
1 次查看(过去 30 天)
显示 更早的评论
clc
clear all
close all
%% Cell generation
alpha=4; % pth loss exponent
p=-30; % power= 10db
p_lin=db2pow(p);
radius=15;
lambda=0.6;
l=lambda/2;
alpha=(lambda/(4*pi))^2;
elements=10;
L=12;
N=4;
K=4;
%% Large intelligent reflecting surfaces
X3=[-7.655; -6.189; -3.251; 2.926; 6.534; 10.79; 5.203; -4.465; 1.42; -8.66; -0.8748; 6.534] ;
Y3=[1.393; 10.42; 6.639; 5.821; 8.425; 2.924; 1.139; 0.7508; -7.917; -6.928; -10.01; -7.03];
plot(X3,Y3,'r*','MarkerSize', 10, 'Linewidth', 2);
%legend('','Base stations','Users','Intelligent Reflecting Surfaces')
hold on
elements=10;
p=0;
%% loop for the elements of irs% D=zeros(1,1200);
for t=1:L
for v=1:elements
for w=1:elements
x3(v,w) = X3(t,1)+p; % X coordinate of an element of IRS for plotting
x_e = zeros(10,10, 12);
y_e = zeros(10,10,12);
y3(v,w) = Y3(t,1); % Y coordinate of an element of IRS for plotting
p=w*l;
x_e(v,w,t) =x3(v,w);
y_e(v,w,t)= y3(v,w);
end
p=0;
Y3(t,1) = Y3(t,1) + l;
end
plot(x3,y3,'bo')
% B=x_e(:,:,1)';
% C=reshape(B,1,[]);
end
%% loop to evaluate distance between IRS and IRS
for a=1:L-1
dd=a;
for k=a+1:L-1
bb=k+1;
for l=1:elements
for m=1:elements
for n=1:elements
for o=1:elements
d(a,bb)=sqrt((x_e(n,o,k)-x_e(l,m,a))^2+(y_e(n,o,k)-y_e(l,m,a))^2)
end
end
end
end
end
end
2 个评论
Walter Roberson
2021-12-19
You should be using a 4 dimensional d array such as
d(a,bb,n,o)=sqrt((x_e(n,o,k)-x_e(l,m,a))^2+(y_e(n,o,k)-y_e(l,m,a))^2);
Except that I would suggest creating a local 2D array in the inner loop, like
for a=1:L-1
dd=a;
for k=a+1:L-1
bb=k+1;
for l=1:elements
for m=1:elements
t = zeros(elements, elements);
for n=1:elements
for o=1:elements
t(n,o)=sqrt((x_e(n,o,k)-x_e(l,m,a))^2+(y_e(n,o,k)-y_e(l,m,a))^2);
end
end
dd(a,bb,:,:) = t;
end
end
end
end
That would be more efficient.
回答(1 个)
Jan
2021-12-19
You overwrite the data by zeros repeatedly:
for t=1:L
for v=1:elements
for w=1:elements
% Here all formerly written values of x_e and y_e
% are overwritten with zeros. Only the last iteration
% is kept:
x_e = zeros(10,10, 12);
y_e = zeros(10,10,12);
x_e(v,w,t) =x3(v,w);
y_e(v,w,t)= y3(v,w);
end
end
end
I guess you want to move the zeros() command before the loops.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multidimensional Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!