Find an outline to the valued data in a matrix of zeros and values

4 次查看(过去 30 天)
Hello,
I have matrix of data points that I basically need to distinguish a boundary between the numbers above zero and the zero.
for example-
0 2 2 0 0 0
0 0 2 1 2 0
0 2 1 1 2 0
0 0 2 1 2 0
Where I want to draw a line along all of the 2s (note these values are not the same in the actual matrix so I can't just say where x=2).
The end goal would be to say anything to the right of the right line is NaN, anything to the left of the left line is also NaN, leaving only the middle values intact.
usually I would just turn zero to NaN and create a mask that way, but there are some zeros in the center of the matrix that I do still need.
I might be going about it wrong and there is likely a very simple solution which I have over complicated in my head.
I am not asking for a full code, just maybe some ideas and helpful functions that could do this.
Thank you!

采纳的回答

KSSV
KSSV 2022-2-3
REad about bwlabel.
I = [0 2 2 0 0 0
0 0 2 1 2 0
0 2 1 1 2 0
0 0 2 1 2 0];
L = bwlabel(I)
L = 4×6
0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0
  4 个评论
KSSV
KSSV 2022-2-3
r1 = [0 1 1 0 0 0] ;
%
strfind(r1,[0 1])
strfind(r1,[1 0])
% Or
find(diff(r1) == 1)
find(diff(r1) == -1)
H
H 2022-2-3
Thank you, this helps until I have zeros in the middle of my 1's in the matrix-
0 1 1 0 0 0
0 0 1 1 1 0
0 1 1 0 1 0
0 0 1 1 1 0
I will need to find a way to only include those on the most left/right side of the matrix. Thank you for your help.

请先登录,再进行评论。

更多回答(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