Get difference between array values

Hello, I have an one column array (see below) with logical 0 and 1. I want to get the difference between each value to detect a jump from 0 to 1 and vice versa. I tried:
find(diff(test(:,1))>0.8)
but everytime I get an error named:
Subscript indices must either be real positive integers or logicals.
whos test:
Name Size Bytes Class Attributes
test 2420x1 2420 uint8
I also tried to convert test to logical or int but the problem still exists. Can someone help?

 採用された回答

Stephen23
Stephen23 2018 年 5 月 28 日
編集済み: Stephen23 2018 年 5 月 28 日

0 投票

You have a variable named diff. Delete that variable.
You might like to check all of these:
which test -all
which diff -all
which find -all

その他の回答 (2 件)

leonidas86
leonidas86 2018 年 5 月 28 日

0 投票

Okay thanks Stephen!!
dpb
dpb 2018 年 5 月 28 日
編集済み: dpb 2018 年 5 月 28 日

0 投票

You can't store the difference from 1 to 0 in an unsigned integer; is there a reason you can't just use default double for test? You must use a signed integer, however.
Also, there's no need for the (:,1) subscript expression on a vector, and since the values are integer logicals, there's no need for the >0.8.
ipos=find([0; diff(test)]==10; % positive locations; augment to keep count same as original length
ineg=find([0; diff(test)]==-10; % ditto for negative

3 件のコメント

leonidas86
leonidas86 2018 年 5 月 28 日
With:
ipos=find([0 diff(test)]==1);
i get the following error
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
Stephen23
Stephen23 2018 年 5 月 28 日
If test is a column vector then you need to use a semi-colon:
[0;diff(test)]
dpb
dpb 2018 年 5 月 28 日
Yeah, intended to fix and forgot...good catch.

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

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

質問済み:

2018 年 5 月 28 日

編集済み:

dpb
2018 年 5 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by