A is a matrix of size 32*32.I want to subtract elements of each 4*4 block of A from their respective 4*4 means

1 visualización (últimos 30 días)
A is a matrix of size 32*32. out = blockproc(A,[4 4],@(x)mean(x.data(:)));
Using the above code, I am able to reduce A to 8*8 which is obtained by averaging each 4*4 blocks of A. Now, I want to subtract elements of each 4*4 block of A from their respective 4*4 means. Thanks !

Respuesta aceptada

Matt J
Matt J el 12 de Feb. de 2020
Editada: Matt J el 12 de Feb. de 2020
out = blockproc(A,[4 4],@(x)mean(x.data(:)));
result = A - repelem( out , 4,4);
  4 comentarios
bidlee devi
bidlee devi el 13 de Feb. de 2020
After running the code
result1 = A - repelem( out , 4,4);
It says
"Undefined function 'repelem' for input arguments of type 'double'."

Iniciar sesión para comentar.

Más respuestas (1)

Fangjun Jiang
Fangjun Jiang el 12 de Feb. de 2020
Editada: Fangjun Jiang el 12 de Feb. de 2020
A=rand(32);
out = blockproc(A,[4 4],@(x)mean(x.data(:)));
temp=repmat({ones(4,1)},8,1);
temp=blkdiag(temp{:});
Result=A-temp*out*temp'
%% or run below to see the effect
temp*magic(8)*temp'

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by