i want to ask how can i store the value of d_eb for each iteration of loop

조회 수: 1 (최근 30일)
I am stuck in one thing if you could help please. how can i store deb mentoined by bold letters in the end for each iteration. code: %% 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 l=0.03; p=0; %% loop for the elements of irs x_e = zeros(10, 10, 12); y_e = zeros(10, 10, 12);
for i=1:L for j=1:elements for k=1:elements x3(j,k) = X3(i,1) + p; % X coordinate of an element of IRS for plotting y3(j,k) = Y3(i,1); % Y coordinate of an element of IRS for plotting p=k*l; x_e(j,k,i) = x3(j,k); y_e(j,k,i)= y3(j,k); end p=0; Y3(i,1) = Y3(i,1) + l; end plot(x3,y3,'bo') end for s=1:4 for n=1:12 for p=1:10 for r=1:10 d_eb=sqrt(((x_e(p,r,n)-x_b(s,1))^2)+((y_e(p,r,n)-y_b(s,1))^2)); % distance end
end
end
end
thanks

채택된 답변

Voss
Voss 2021년 12월 16일
Case 1: If you want one d_eb value for each (x_e, y_e) point, you can initialize d_eb to be the same size as x_e and store each element of d_eb as it is calculated:
x_e = zeros(10, 10, 12);
y_e = zeros(10, 10, 12);
d_eb = zeros(10, 10, 12);
for s=4
for i=1:L
for j=1:elements
for k=1:elements
x3(j,k) = X3(i,1) + p; % X coordinate of an element of IRS for plotting
y3(j,k) = Y3(i,1); % Y coordinate of an element of IRS for plotting
p=k*l;
x_e(j,k,i) = x3(j,k);
y_e(j,k,i)= y3(j,k);
end
p=0;
Y3(i,1) = Y3(i,1) + l;
end
plot(x3,y3,'bo')
end
for n=1:12
for p=1:10
for r=1:10
d_eb(p,r,n)=sqrt(((x_e(p,r,n)-x_b(s,1))^2)+((y_e(p,r,n)-y_b(s,1))^2)); % distance
end
end
end
end
Case 2: If you want to keep d_eb values for each value of s as well (currently s is always only 4), you can initialize d_eb to be a 4-D matrix with the fourth dimension representing the values for each value of s:
x_e = zeros(10, 10, 12);
y_e = zeros(10, 10, 12);
s_all = 4;
NS = numel(s_all);
d_eb = zeros(10, 10, 12, NS);
for s=1:NS
for i=1:L
for j=1:elements
for k=1:elements
x3(j,k) = X3(i,1) + p; % X coordinate of an element of IRS for plotting
y3(j,k) = Y3(i,1); % Y coordinate of an element of IRS for plotting
p=k*l;
x_e(j,k,i) = x3(j,k);
y_e(j,k,i)= y3(j,k);
end
p=0;
Y3(i,1) = Y3(i,1) + l;
end
plot(x3,y3,'bo')
end
for n=1:12
for p=1:10
for r=1:10
d_eb(p,r,n,s)=sqrt(((x_e(p,r,n)-x_b(s_all(s),1))^2)+((y_e(p,r,n)-y_b(s_all(s),1))^2)); % distance
end
end
end
end
Note that in this case I redefined s to be an index into a new vector called s_all, which contains all values of s to be used, and I modified the indexing into x_b and y_b accordingly.
In either case, you can avoid the last triple for loop over n, p, r by using element-wise operations (.^ instead of ^) in your distance calculation. For example, in Case 1, this:
for n=1:12
for p=1:10
for r=1:10
d_eb(p,r,n)=sqrt(((x_e(p,r,n)-x_b(s,1))^2)+((y_e(p,r,n)-y_b(s,1))^2)); % distance
end
end
end
Is the same as this:
d_eb = sqrt(((x_e-x_b(s,1)).^2)+((y_e-y_b(s,1)).^2)); % distance
And in Case 2, this:
for n=1:12
for p=1:10
for r=1:10
d_eb(p,r,n,s)=sqrt(((x_e(p,r,n)-x_b(s_all(s),1))^2)+((y_e(p,r,n)-y_b(s_all(s),1))^2)); % distance
end
end
end
is the same as this:
d_eb(:,:,:,s) = sqrt(((x_e-x_b(s_all(s),1)).^2)+((y_e-y_b(s_all(s),1)).^2)); % distance

추가 답변 (1개)

Torsten
Torsten 2021년 12월 16일
d_eb = sqrt((x_e - x_b(4,1)).^2 + (y_e - y_b(4,1)).^2); % distance
without any loops.

카테고리

Help CenterFile Exchange에서 Model Predictive Control Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by