how can I do this mathmatical operation?

1 回表示 (過去 30 日間)
Young Lee
Young Lee 2018 年 10 月 22 日
コメント済み: Young Lee 2018 年 10 月 23 日
I wish to do sum and subtract in column 2 of 84x7 matrices between different rows of the element on the same column and produce the answers into an array. example @Column 3, a = [ 1 3 3 3 ; 2 2 2 2 ; 3 4 4 4 ; 4 0 1 0 ; 5 5 5 5 ; 1 1 1 1 ; 7 7 7 7 ] desired outcome: => b = [ 3 7 10 ]
  5 件のコメント
Kevin Chng
Kevin Chng 2018 年 10 月 22 日
編集済み: Kevin Chng 2018 年 10 月 22 日
I guess what you want is
for i=1:2:(length(a(:,3))-2)
b(i)= a(i,3)-a(i+1,3)+(a(i+2,3)-a(i+1,3))
end
b(2:2:end)=[];
Why length(a(:,3)-2)? It is to avoid exceed the dimension.
Young Lee
Young Lee 2018 年 10 月 23 日
Thanks that worked out perfectly with little change @@

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

採用された回答

Kevin Chng
Kevin Chng 2018 年 10 月 22 日
I guess what you want is
for i=1:2:(length(a(:,3))-2)
b(i)= a(i,3)-a(i+1,3)+(a(i+2,3)-a(i+1,3))
end
b(2:2:end)=[];
Why length(a(:,3)-2)? It is to avoid exceed the dimension.
  2 件のコメント
Jan
Jan 2018 年 10 月 22 日
Use size(a, 1) instead of length(a(:, 3)), because it is more efficient and nicer.
Rik
Rik 2018 年 10 月 22 日
To expand a bit on Jan's comment: using length can get you into trouble, because it is equivalent to max(size(A)). That means that you need to be sure that the dimension that is relevant for you will always be the largest. Using size with a specified dimension will avoid this problem. If you want to iterate through all elements of a vector, it is safest to use numel, which is equivalent to prod(size(A)).

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

その他の回答 (1 件)

Jan
Jan 2018 年 10 月 22 日
編集済み: Jan 2018 年 10 月 22 日
This works without a loop:
n = size(a, 1);
b = a(1:2:n-2, 3) - 2 * a(2:2:n-1, 3) + a(3:2:n, 3)

カテゴリ

Help Center および File ExchangeOperators and Elementary Operations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by