# build an array within the loop

3 views (last 30 days)
Aamna Alshehhi on 2 Oct 2019
Commented: Aamna Alshehhi on 2 Oct 2019
i wanna build two arrays within a loop. the first array contain Th2 elements and the second array contain Th3 elements. then i wanna plot them. this my code
for Th2=0:360
d =3.5; a = 1;b = 2; c = 4;
Th1= 0;
Zc = conj(Z);
Ka = c*Zc; Kb = Z*Zc + c^2 -b^2; Kc = c*Z;
T = roots([ Ka Kb Kc]);
S = (c*T+Z)/b;
end
plot (Th2,Th3);

Charles Rice on 2 Oct 2019
Each time through the loop, Th3 is being overwritten with a new value. You need to assign each new value to the next index in an array.
theta_range = 0:360; % create the range of angles
Th3 = zeros(2, numel(theta_range)); % preallocate array
Th4 = zeros(2, numel(theta_range)); % preallocate array
for theta_index = 1:numel(theta_range)
% step through angles (this helps avoid zero indexing and lets you have a non-integer range)
Th2 = theta_range(theta_index);
d = 3.5;
a = 1;
b = 2;
c = 4;
Th1= 0;
Zc = conj(Z);
Ka = c*Zc;
Kb = Z.*Zc + c^2 - b^2;
Kc = c*Z;
T = roots([ Ka Kb Kc]);
S = (c*T+Z)/b;
Th3(:, theta_index) = rad2deg(angle(S)); % this function gives you a 2x1 result, so put it in both rows
end
subplot(2,1,1)
plot(theta_range, Th3(1,:));
xlabel('Theta')
ylabel('Positive Theta 3')
subplot(2,1,2)
plot(theta_range, Th3(2,:));
xlabel('Theta')
ylabel('Negative Theta 3')

#### 1 Comment

Aamna Alshehhi on 2 Oct 2019
THANKS SO MUCH!!

Ajay Kumar on 2 Oct 2019
You are not creating Th3 array but overwriting it everytime. Try this
for i=0:360
d =3.5; a = 1;b = 2; c = 4;
Th1= 0;
Zc = conj(Z);
Ka = c*Zc; Kb = Z*Zc + c^2 -b^2; Kc = c*Z;
T = roots([ Ka Kb Kc]);
S = (c*T+Z)/b;
end
Th2 = 0:360;
plot (Th2,Th3(1,:));
hold on;
plot (Th2,Th3(2,:));

#### 1 Comment

Aamna Alshehhi on 2 Oct 2019
you guys are AMAZING. THANKS!!!