Hi I have two matrices
a = [1 2 3; 2 3 4]
and
b = [2 3 4; 3 4 5];
I want a mean output matrix "c," whose output should be
c= [1.5 2.5 3.5; 2.5 3.5 4.5].
so basically "c" should have a mean of respective parameters and same dimension as "a" and "b". Can someone help?
Thanks, Subrat

1 comentario

Yanbo
Yanbo el 15 de Ag. de 2012
you might just simply add a to b, and them divide the sum by 2. Or, are you looking for a specific command?

Iniciar sesión para comentar.

 Respuesta aceptada

Oleg Komarov
Oleg Komarov el 15 de Ag. de 2012

0 votos

Unfortunately your example doesn't allow to propose a unique solution, i.e.:
c1 = [mean(a); mean(b)]
c2 = squeeze(mean(cat(3,a,b),3));
c1 simply takes the vertical mean (along rows) of a and then concatenates the vertical mean of b
c2 takes the mean of row 1 from a AND b and then concatenates the mean of the second row fro the two matrices.
Which one do you want?

2 comentarios

Subrat kumar sahoo
Subrat kumar sahoo el 15 de Ag. de 2012
Thanks Oleg, I wanted the operation like c2 is what I was looking for. Thanks again. Subrat
Subrat kumar sahoo
Subrat kumar sahoo el 15 de Ag. de 2012
I have a bit different requirement now: if "a" and "b" happens to be two elements of the same cell like d{1} and d{2} then is there a possibility of getting "c2" (*c2 = squeeze(mean(cat(3,a,b),3));*) with elements "a" and "b" (i.e. now d{1} and d{2}) picked thru a "for" loop? Thanks, Subrat

Iniciar sesión para comentar.

Más respuestas (3)

Image Analyst
Image Analyst el 15 de Ag. de 2012

5 votos

a = [1 2 3; 2 3 4];
b = [2 3 4; 3 4 5];
c = (a+b)/2
In the command window:
c =
1.5 2.5 3.5
2.5 3.5 4.5

3 comentarios

Oleg Komarov
Oleg Komarov el 15 de Ag. de 2012
This is the so much more intuitive version of my c2!
Alfredo Scigliani
Alfredo Scigliani el 25 de Abr. de 2023
what if you have a ridculous amount of matrices (1000) and you want to find the average? I think a for loop, but not sure how.
Steven Lord
Steven Lord el 25 de Abr. de 2023
what if you have a ridculous amount of matrices (1000)
Then I'd recommend you revise the code to avoid that scenario. More likely than not you dynamically created variables with numbered names like x1, x2, x3, etc.
Can you do that? Yes.
Should you do this? The general consensus is no. That Answers post explains why this is generally discouraged and offers several alternative approaches.

Iniciar sesión para comentar.

Thomas
Thomas el 15 de Ag. de 2012
Editada: Thomas el 15 de Ag. de 2012

0 votos

a = [1 2 3; 2 3 4];
b = [2 3 4; 3 4 5];
c=[mean(a);mean(b)]
Benjamin Klugah-Brown
Benjamin Klugah-Brown el 9 de Ag. de 2020

0 votos

what if matrix a and b have different size

5 comentarios

Walter Roberson
Walter Roberson el 9 de Ag. de 2020
How would you like to define the results for locations that exist in one array but not in the other array?
Benjamin Klugah-Brown
Benjamin Klugah-Brown el 10 de Ag. de 2020
Thinking of using zeros?
s=max(size(A),size(B)) ;
A1=A;
B1=B;
A1(end+1:s(1),1)=0;
B1(end+1,s(1),1)=0;
A1(1,end+1:s(2))=0;
B1(1,end+1:s(2))=0;
(A1+B1)/2
Benjamin Klugah-Brown
Benjamin Klugah-Brown el 10 de Ag. de 2020
Thanks very much... by the ways does it work for NA too?
If by NA you mean NaN, then you would have to use
mean(cat(3, A1, B1), 3, 'omitnan')
or you would have to use something like
maskA = isnan(A1);
maskB = isnan(B1);
C1 = (A1 + B1) / 2;
C1(maskA) = B1(maskA);
C1(maskB) = A1(maskB);

Iniciar sesión para comentar.

Categorías

Etiquetas

Preguntada:

el 15 de Ag. de 2012

Comentada:

el 25 de Abr. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by