how can I use my function on 3*3 blocks?

1 visualización (últimos 30 días)
jack nn
jack nn el 9 de Abr. de 2015
Comentada: Mohammad Abouali el 10 de Abr. de 2015
hi I have a matrix ,I wanna use a function on 3*3 blocks. my function is: if in a block we watch just a one this block should return 1 but if all 9 elements of this block is zero this function should return 0 how can I do this in matlab?
...all the elements of this matrix is zero and one.
  1 comentario
Image Analyst
Image Analyst el 9 de Abr. de 2015
Give examples of the 3x3 blocks that return 1 and 0. I especially don't understand the grammar of "if in a block we watch just a one this block should return 1". Exactly what returns a 1? Does this:
[.2 .3 .4
.3. .5 .6
.6 .7 .9]
Does this?
[0 0 1
0 0 0
0 0 0]

Iniciar sesión para comentar.

Respuesta aceptada

Mohammad Abouali
Mohammad Abouali el 10 de Abr. de 2015
Editada: Mohammad Abouali el 10 de Abr. de 2015
inputData=zeros(10,10);
inputData(randi(100,[15,1]))=1
inputData =
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0
% this is what you are looking for
result=blockproc(inputData,[3,3],@(block) any(block.data(:)~=0))
result =
0 0 1 0
1 0 1 1
1 0 1 0
1 1 0 0
% and if you want both inputData and result matrix be the same size do this:
result=blockproc(inputData,[3,3],@(block) any(block.data(:)~=0)*ones(3,3))
result =
0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 1 1 1 0 0 0
1 1 1 0 0 0 1 1 1 1 1 1
1 1 1 0 0 0 1 1 1 1 1 1
1 1 1 0 0 0 1 1 1 1 1 1
1 1 1 0 0 0 1 1 1 0 0 0
1 1 1 0 0 0 1 1 1 0 0 0
1 1 1 0 0 0 1 1 1 0 0 0
1 1 1 1 1 1 0 0 0 0 0 0
1 1 1 1 1 1 0 0 0 0 0 0
1 1 1 1 1 1 0 0 0 0 0 0
  2 comentarios
jack nn
jack nn el 10 de Abr. de 2015
dear Mohammad Abouali ,I really appreciate you for your help.
Mohammad Abouali
Mohammad Abouali el 10 de Abr. de 2015
you are welcome

Iniciar sesión para comentar.

Más respuestas (1)

Roger Stafford
Roger Stafford el 10 de Abr. de 2015
m = M(a:a+2,b:b+2); % This is your "block"
t = +any(m(:)~=0); % This is the returned value

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by