Matlab - Sumar elementos de una matriz en base a condiciones de otra matriz

   
Vista:

Sumar elementos de una matriz en base a condiciones de otra matriz

Publicado por John (2 intervenciones) el 14/02/2018 21:00:52
Hola,
tengo el siguiente problema, necesito sumar los valores asociados de cada elemento y los que estan conectados al mismo tambien,

CG1=20+40+12=72
CG2=20+12+30=62
CG3=30+20+40=90
CG4=40+30+12=82


grafo

El caso es que este sistema lo pase a una matriz, la cual consiste de 1 y 0 los cuales representan las conexiones. Cuando voy a obtener CG1 no obtengo el valor deseado ya que obtengo la suma de G1+G2 o G1+G4, y la verdad necesito G1+G2+G4.
Creo que el problema recae en que necesito sumar en un mismo ciclo del for G1+G2+G4, pero no he podido con esto todavia.
Agradezco cualquier consejo y sugerencia.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
%Prueba#1
clear all
%Condiciones iniciales del sistema
g=[12 20 30 40];
 
%Matriz de adyacencia
mady=[0 1 0 1;
      1 0 1 0;
      0 1 0 1;
      1 0 1 0];
 
cel=length(mady);
 
    for a=1:cel;
 
        for b=1:cel;
            if mady(a,b)==1
            pot=sum(g(1,a))+sum(g(1,b))
            end
        end
    end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel

Sumar elementos de una matriz en base a condiciones de otra matriz

Publicado por Daniel (264 intervenciones) el 15/02/2018 20:21:53
Con esto debería funcionar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear all
%Condiciones iniciales del sistema
g=[12 20 30 40];
 
%Matriz de adyacencia
mady=[0 1 0 1;
    1 0 1 0;
    0 1 0 1;
    1 0 1 0];
 
mtotal=mady+eye(size(mady)); % agrego la conexion él mismo
 
resultado=mtotal*g';
disp(resultado)

Comentanos como te fue

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Sumar elementos de una matriz en base a condiciones de otra matriz

Publicado por John (2 intervenciones) el 17/02/2018 17:31:34
Hola Daniel, de hecho funciono perfecto de hecho de hecho estaba intentadolo de otra forma pero sin llegar a un resultado como el tuyo. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad