Matlab - Sumar elementos matriz dada otra

 
Vista:

Sumar elementos matriz dada otra

Publicado por JA (4 intervenciones) el 12/01/2013 19:13:10
Realice una función que dada una matriz M y una matriz de posiciones p, devuelva la suma de los elementos de M situado en las posiciones indicadas en p. Por ejemplo:

6 7 9 1 1 3
M= 3 4 2 y p= 1 2 1
2 4 1
Entonces la función devolvería 15 = M(1,1) + M (1,2) + M(3,1). Si p contiene alguna posición que no existe en M o si p no tiene dos filas, entonces la función debe devolver el valor NaN.


No termino de ver como hacer el termino de la sumatoria para que me coja las posiciones


M=[6 7 9;3 4 2;2 4 1]
Mpos=[1 1 3;1 2 1]

res=0;
[fil,col]=size(Mpos)
for i=1:fil
for j=1:col
res=res+sum(M(i,j));

end

end


disp(res);
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Sumar elementos matriz dada otra

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 13/01/2013 03:59:28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear
M=[6 7 9;3 4 2;2 4 1];
Mpos=[1 1 3;1 2 1];
res=0;
 for i=1:size(M,1)
    for j=1:size(M,1)
        for l=1:3
            if [i;j]==Mpos(:,l)
               res=res+M(i,j);
            end
        end
    end
 
 end
 disp(res);



1
2
>> comparar_cadenas1
    15


Mejóralo, ya tienes la parte de la suma.


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com
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
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Sumar elementos matriz dada otra

Publicado por Dave (1094 intervenciones) el 18/01/2013 01:06:50
Hola JA;

Te dejo una propuesta de como podrías resolver tu problema.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clear var
M=[6 7 9;
    3 4 2;
    2 4 1]
 
Mpos=[1 1 3;
    1 2 1]
 
f1=Mpos(1,:);
f2=Mpos(2,:);
 
var=0;
for n=1:length(f1)
     var=var+M(f1(n),f2(n));
end
var


Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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