For Loop operating with last and first entry of array

1 view (last 30 days)
If i have an array like this:
A=[1;5;6;8];
and i apply a simple for loop like this:
for k=1:4
B(k)=A(k)+A(k+1);
end
How can i write the code, so the last entry of my array A makes the operation with the first entry aswell, namely 8+1=9?

Answers (1)

David Fletcher
David Fletcher on 4 Apr 2018
Edited: David Fletcher on 4 Apr 2018
Like this?
A=[1;5;6;8];
B=A(1:length(A))+[A(2:length(A));A(1)]
B =
6
11
14
9
  2 Comments
Manuel Fuelling
Manuel Fuelling on 4 Apr 2018
My problem is different than the example i gave:
Coeff is a 4x4 Matrix
for m=1:3
syms x y z
eqns = [Coeff(m,1)*x+Coeff(m,2)*y+Coeff(m,3)*z+Coeff(m,4) == 0, Coeff(m+1,1)*x+Coeff(m+1,2)*y+Coeff(m+1,3)*z+Coeff(m+1,4) == 0];
vars = [x y z];
[solX, solY, solZ] = solve(eqns, vars);
arbpt_sym=[solX;solY;solZ];
arbpt_one_point=(double(arbpt_sym)); %mache sie als double
arbpt(:,m) = arbpt_one_point;
end
the last iteration should operate with the last row and first row of Coeff
David Fletcher
David Fletcher on 4 Apr 2018
So you want it to operate as in the previous example but summing successive rows of a 2D matrix (and the last and first row) rather than the columns of the 1D matrix that you presented as your example?
Like this:
A=[1 1 1 1;2 2 2 2;3 3 3 3;4 4 4 4]
B=A(1:size(A),:)+[A(2:size(A),:);A(1,:)]
A =
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
B =
3 3 3 3
5 5 5 5
7 7 7 7
5 5 5 5

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!