How to subtract Mean from Matrix along columns

Hi,
In subtraction, there is an example of subtract mean from matrix: A - mean(A) and it works well. But I have a matrix A of 15X1000, and I want to subtract the mean mean(A, 2) along the 1000 columns, how to do that? Thanks Jennifer

 Respuesta aceptada

JFz
JFz el 16 de Nov. de 2017

0 votos

With the above help, found that bsxfun works for versions before 2017a:
bsxfun(@minus, A, mean(A, 2))

Más respuestas (2)

KL
KL el 16 de Nov. de 2017
Editada: KL el 16 de Nov. de 2017
Just the same way, A-A_mean. Here's an example with 5 columns,
>>A = reshape(1:25,5,5) %dummydata
A =
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
>>A_mean = mean(A,2)
A_mean =
11
12
13
14
15
>>A = A-A_mean
A =
-10 -5 0 5 10
-10 -5 0 5 10
-10 -5 0 5 10
-10 -5 0 5 10
-10 -5 0 5 10
EDIT (thanks John)
and for older versions,
A = bsxfun(@minus,A,A_mean)

3 comentarios

John D'Errico
John D'Errico el 16 de Nov. de 2017
Editada: John D'Errico el 16 de Nov. de 2017
+1, but note that this requires a recent release. I think that capability was introduced in R2017a. Otherwise, you will need to use a tool like repmat or bsxfun. It is clear that JFz has a sufficiently recent release, but others might see the post and expect it to work in an old release.
JFz
JFz el 16 de Nov. de 2017
I tried the above but got this error: Error using - Matrix dimensions must agree.
I am using 2016a. I will have to change a lot of code to upgrade to 2017a successfully. Thanks, let me look at repmat and bsxfun.
JFz
JFz el 16 de Nov. de 2017
OK. bsxfun works! bsxfun(@minus, A, mean(A, 2))

Iniciar sesión para comentar.

JFz
JFz el 16 de Nov. de 2017

0 votos

Thanks to KL and John! Have a nice day!

Categorías

Productos

Etiquetas

Preguntada:

JFz
el 16 de Nov. de 2017

Editada:

el 16 de Nov. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by