필터 지우기
필터 지우기

how can I do this mathmatical operation?

조회 수: 2 (최근 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 CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by