array manipulation in loop through a sequence

3 views (last 30 days)
Dear programmers
I have defined an array of 4 values with 1 in all the rows initially as : tissue = [1 1 1 1]
After 1st iteration, I want to replace '1' at 4th position by '2' as: [1 1 1 2].
After 2nd iteration, '2' wil be shifted to 3rd position and new value '3' will take the 4th position as: [1 1 2 3 ] .
After 3rd iteration, '2' wil be shifted to 2nd position ,'3' wil be shifted to 3rd position and new value '4' will take the 4th position as: [1 2 3 4].
After 4th iteration, '2' wil be shifted to 1st position ,'3' wil be shifted to 2nd position, '4' wil be shifted to 3rd position and new value '5' will take the 4th position as: [2 3 4 5].
In the below code even if I am being asked the iteration number but I am getting the results only for the i=4. Where am I doing the error ? Please help!
E = zeros(1,4);
for i=1:4
E(i) = 1
end
prompt = 'What is the iteration number? ';
i = input(prompt)
for i=1:4
E(5-i)= 2
for i=2:4
E(6-i)= 3
for i=3:4
E(7-i)= 4
for i=4
E(4)=5
end
end
end
end
  1 Comment
Walter Roberson
Walter Roberson on 2 Sep 2019
i = input(prompt)
assigns a particular value to i according to the user's input
for i=1:4
then overwrites i with the value 1, then 2, then 3, then 4.

Sign in to comment.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 2 Sep 2019
E = ones(4);
n = size(E,1);
for ii = 1:n
E(ii,n-ii+1:n) = E(ii - 1 + (ii == 1),n-ii+1:n) + 1
end
  3 Comments
Andrei Bobrov
Andrei Bobrov on 5 Sep 2019
E = ones(1,4);
A = zeros(4);
for ii = 1:4
E(end - ii + 1 : end) = E(end - ii + 1 : end) + 1
A(ii,:) = E;
end
RAJ
RAJ on 5 Sep 2019
Thanks Mr. Andrei your kind help and sorry for bothering you again .
It is almost done. But in the problem if the values are not incremented by 1 as in this case 2,3,4 and 5 but rather the values are random say 20,300.5,60 and 1.5. In that case the code is not working because in actual problem that I am working on, the values of E at 4th position can be anything and those will be read from a text file(in which the first column will be for an element and 2nd column is the E value that will take the position of E4 everytime and replace the previously positioned E4 to E3 i.e push one position ahead).
N.B: I am attaching the text file herewith. In the text file the 1st column is the finite element number and the 2nd column corresponds to the respective E that will take the place of E4. Such text files will be read in every iteration of the main program. I have tried to make a separate function by do loop to retrieve those E values row wise but that is not working.

Sign in to comment.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!