Getting distance between specific numbers in array after using diff() function
3 次查看(过去 30 天)
显示 更早的评论
I would like to find a distance between specific arrays (this distance represents time), I got it as an output of using diff function thanks to it I know when foot movement started. For example let's say I have array like this:
x = [ 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 -1]
And I would like to automate the code and find the distance - how many zeros are between 1 and -1 (i don't want from -1 and 1), So for example from this code I'd know that I have 1) 10 zeros space between first 1 and -1 and index range between first and last zero, and for the 2) 3 zeros space and also indexes. Is that possible to do?
0 个评论
采纳的回答
Jan
2022-6-12
编辑:Jan
2022-6-12
x = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, -1];
pos = find(x == 1);
neg = find(x == -1);
len = neg - pos - 1
If the trailing -1 is missing:
len = neg(1:numel(pos)) - pos - 1;
5 个评论
Image Analyst
2022-6-14
x = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, -1];
pos = find(x == 1);
neg = find(x == -1);
len = neg - pos - 1
% Find out where each run of 0's start and end>
startingPositions = pos + 1
endingPositions = neg - 1
It seems to miss the zero starting and ending at index 1, and the run starting at 14 and ending at 16.
Maybe search for the zeros directly instead of for 1 and -1.
更多回答(1 个)
Image Analyst
2022-6-12
编辑:Image Analyst
2022-6-13
If you have the Image Processing Toolbox you can use regionprops to find the location of the "0" regions:
x = [ 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 -1];
props = regionprops(x == 0, 'Area', 'PixelIdxList');
allZeroLengths = [props.Area]
for k = 1 : numel(props)
startingIndexes(k) = props(k).PixelIdxList(1);
endingIndexes(k) = props(k).PixelIdxList(end);
end
startingIndexes % Show in command window
endingIndexes
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!