필터 지우기
필터 지우기

Finding location of change of signs of a matrix's elements

조회 수: 19 (최근 30일)
Volkan Yangin
Volkan Yangin 2017년 2월 18일
댓글: MA-Winlab 2019년 4월 7일
Hi everbody, I have a matrix like this:
A=[0 0 0 0.33 0.33 0.33 0 0 0 -0.33 -0.33 -0.33 0 0 0];
How can i find location of change of signs? I get an error while using find and diff command. I think, i have made a mistake because of the < and > symbols. May you help me? Thanks.

채택된 답변

Walter Roberson
Walter Roberson 2017년 2월 18일
find(diff(sign(A)))+1
to return the locations of the beginning of the new sign.
Note that this includes changing to 0, as 0 has a different sign than positive numbers or negative numbers.
  댓글 수: 3
MA-Winlab
MA-Winlab 2019년 4월 6일
@Roberson, I tried your approach for finding the locations of change from 0 to 1 and from 1 to 0, but they are in one array.
So, if I have this array and want to find the locations of change from 1 to 0 (returned in an array) and the locations of change from 1 to 0 (returned in a SEPRATE array), how can I modify this line?
Thank you
A=[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0];
MA-Winlab
MA-Winlab 2019년 4월 7일
Update
I figured out how to do that (in my case, the vector of 0s and 1s has an even number):
OpenClose = find(diff(sign(A))) + 1;
OneToZero = OpenClose(1:2:end)
ZeroToOne = OpenClose(2:2:end)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by