How can I get my matrix to populate with correct values from for loop?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Alba Delgadillo
am 9 Mär. 2021
Kommentiert: Alba Delgadillo
am 9 Mär. 2021
Hello. I first create a matrix by using logspace and I convert it to a 50 row and 1 column matrix. I then create a for loop that polpulates column 2 per the number obtained from my for loop, (50 iterations). The values from my column one are used inside the for loop. The first iteration is done perfectly. Values (1,1) was used and populated value (1,2) . When my for loop continues to iteration 2 to 50, the rest of colum 2 is populted by 1's. Can someone please help me understand why it does not do as it first did?
format long
h = logspace(-9, -4);
h = h'
for j = 1 : 50
eps = h(j,1)
for i = 1 : 101
c = xm;
xm = (xa + xb) / 2;
t(i) = abs((xm - c ) / xm);
if t(i) <= eps
break
end
if t(i) > eps
if y(xa) < 0 && y(xm) > 0
xb = xm;
end
if y(xa) > 0 && y(xm) < 0
xb = xm;
end
if y(xm) < 0 && y(xb) > 0
xa = xm;
end
if y(xm) > 0 && y(xb) <0
xa = xm;
end
end
if i == 100
break
end
i = i + 1;
end
h(j, 2) = (i)
j = j + 1
end
p = h(:,1);
k = h(:,2);
semilogx(p,k)
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 9 Mär. 2021
xm = (xa + xb) / 2;
You do not reset xa and xb to their original values for each j value.
Weitere Antworten (1)
KALYAN ACHARJYA
am 9 Mär. 2021
Bearbeitet: KALYAN ACHARJYA
am 9 Mär. 2021
When my for loop continues to iteration 2 to 50, the rest of colum 2 is populted by 1's. Can someone please help me understand why it does not do as it first did?
Here discussion on Why Only?
Here you are trying to populate the h, 2nd column data, with i's value. The simplest way, the code can be represents as below
for j = 1 : 50
for i =1:101
%
end
h(j,2)=i;
end
Can you notice here, how does nesting loop works?
For the first iteration j=1 and inner loop runs from i=1 to 101, hen it assigned the latest i value to h
h(1,2)=101; % Latest i iteration value from the inner loop.
Next for the 2nd iteration j=2 and inner loop runs from i=1 to 101, then it assigned the latest i value to h
h(2,2)=101; % Latest i iteration value from the inner loop.
Next for the 3rd iteration j=3 and inner loop runs from i=1 to 101, then it assigned the latest i value to h
h(3,2)=101; % Latest i iteration value from the inner loop.
............
You will get the all same values in the 2nd columns of h
h =
0.0000 101.0000
0.0000 101.0000
0.0000 101.0000
0.0000 101.0000
0.0000 101.0000
0.0000 101.0000
................
What next: You have to improve the code, see the Basic here
2 Kommentare
KALYAN ACHARJYA
am 9 Mär. 2021
Now, I have notices that.
if t(i) <= eps
break
end
Hope you got the idea, now how to solve
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!