matrix buffer

1 次查看(过去 30 天)
M.J. Glasbergen
M.J. Glasbergen 2012-2-4
编辑: Matt J 2013-10-4
I've got a large matrix, mainly consisting of zeros and with some randomly placed values. I would like to be able to find the surrounding zeros of the non-zero values. If a single value is only surrounded by zeros it's no problem, but a cluster of values poses more problems. I could treat the values in the cluster as single values, but that means an extremely long runtime of the code. Is there a way to find all zeros surrounding a certain value? I don't have any additional toolboxes, but if there is one that could be usefull, I can always try to convince my boss that I need it...

采纳的回答

Andrei Bobrov
Andrei Bobrov 2012-2-4
bwdist from Image Processing Toolbox
OR
A - your array
[i1,j1] = find(A)
[y x] = ndgrid(1:size(A,1),1:size(A,2))
out = min(max(abs(bsxfun(@minus,x,reshape(j1,1,1,[]))),...
abs(bsxfun(@minus,y,reshape(i1,1,1,[])))),[],3)
  4 个评论
Andrei Bobrov
Andrei Bobrov 2012-2-8
more variant
out = min(hypot(bsxfun(@minus,y,permute(i1,[3 2 1])),bsxfun(@minus,x,permute(j1,[3 2 1]))),[],3)
as 'bwdist' from 'Image Processing Toolbox'
M.J. Glasbergen
M.J. Glasbergen 2012-2-10
You're the greatest, this last one is the one I was looking for now :-)

请先登录,再进行评论。

更多回答(1 个)

M.J. Glasbergen
M.J. Glasbergen 2012-2-5
Seems to work great, thnx!

类别

Help CenterFile Exchange 中查找有关 Numeric Types 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by