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 日間)
Maimoona Asad
Maimoona Asad 2021 年 12 月 19 日
回答済み: Jan 2021 年 12 月 19 日
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
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.
Maimoona Asad
Maimoona Asad 2021 年 12 月 19 日
i am getting all values 0 after trying this

サインインしてコメントする。

回答 (1 件)

Jan
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.

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by