For Loop operating with last and first entry of array

1 回表示 (過去 30 日間)
Manuel Fuelling
Manuel Fuelling 2018 年 4 月 4 日
コメント済み: David Fletcher 2018 年 4 月 4 日
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?

回答 (1 件)

David Fletcher
David Fletcher 2018 年 4 月 4 日
編集済み: David Fletcher 2018 年 4 月 4 日
Like this?
A=[1;5;6;8];
B=A(1:length(A))+[A(2:length(A));A(1)]
B =
6
11
14
9
  2 件のコメント
Manuel Fuelling
Manuel Fuelling 2018 年 4 月 4 日
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 2018 年 4 月 4 日
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by