How to find the element in on boundary or interior?
4 次查看(过去 30 天)
显示 更早的评论
a=[3 4 5;6 1 2]
I want to know if the element 2 is on boundary or interior?
how will i check?
2 个评论
Image Analyst
2014-4-7
When a is a 2 by 3 matrix:
a =
3 4 5
6 1 2
Exactly which pixels do you consider to be interior and which to be exterior/boundary? The all look like boundary pixels to me.
采纳的回答
Jos (10584)
2014-4-7
tf = false(size(a))
tf(2:end-1,2:end-1) = true
a(tf) % elements in interior
a(~tf) % elements on boundary
0 个评论
更多回答(2 个)
Image Analyst
2014-4-7
What is element 2? The lower right element with the value of 2? Or row=2, column = 1 which is how the column major order of MATLAB defines the second element? Can't you just look at the row and column and see if it's equal to 1 or the total number of rows or columns in the matrix?
0 个评论
Alberto
2014-4-7
编辑:Alberto
2014-4-7
If you suppose there is only one value 2 in the matrix, this code may be useful:
a=[3 4 5;6 2 1; 1 6 9] % interior value % a=[3 4 5;6 1 2; 1 6 9] % edge value [nrow ncol]= size(a) % Obtain dimensions
% find(a==2) extract linear index, so you better convert to subindices [I,J] = ind2sub(size(a),find(a==2))
% and checking if I==1 J==1 I==nrow J==ncol display('In the edge') else display('interior value')
end
% If there are other 2 values you should create a for across the I and J vectors.
a=[3 4 5;6 2 1; 2 6 9];
[nrow ncol]= size(a); [I,J] = ind2sub(size(a),find(a==2));
for k=1:length(I) if I(k)==1 J(k)==1 I(k)==nrow J(k)==ncol display(['In the edge ( ', num2str(I(k)), ', ', num2str(J(k)), ' )'])
else display(['Interior value ( ', num2str(I(k)), ', ', num2str(J(k)), ' )'])
end
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!