Matlab - Ciclos

   
Vista:

Ciclos

Publicado por Manuel mhiguerasm@gmail.com (4 intervenciones) el 20/11/2013 20:45:45
Dada la matriz M:

>> M= [16 2 3 13 ; 5 11 10 8 ; 9 7 6 12 ; 4 14 15 1];

• Generar uno o varios editor(es) que contenga(n) bifurcaciones o bucles, con el objeto que
genere(n) lo siguiente:

• Una variable que guarde la suma de la diagonal de los elementos de la matriz M.

• Convierta los valores que no están dentro de la diagonal en ceros.

• Almacene los valores de la diagonal en un vector columna.

Alguien me puede ayudar por favor.



Muachas Gracias
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 Jorge

Ciclos

Publicado por Jorge (212 intervenciones) el 21/11/2013 08:35:32
Hola Manuel, una forma de implementarlo usando solo ciclos y bifurcaciones sería la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
M=[16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];
[m,n]=size(M);
for i=1:m
    for j=1:n
        if i~=j
            M(i,j)=0; % Convertir a ceros 
        end
        if i==j
            D(i,1)=M(i,j); % Vector con elementos de la diagonal
        end
    end
end
%% Para la suma de la diagonal
SumDiag=0;
for i=1:length(D)
    SumDiag=SumDiag+D(i);
end


Hay algunos comandos nativos de MATLAB como "sum" o "diag" que simplificarían lo anterior.

Saludos.
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

Ciclos

Publicado por Manuel mhiguerasm@gmail.com (4 intervenciones) el 21/11/2013 13:59:12
Jorge, lo replicaré en mi matlab y subiré mis comentarios.

Muchisimas Gracias,

Saludos.
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 JOSE JEREMIAS CABALLERO

Ciclos

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 21/11/2013 20:51:44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clear all
M= [16 2 3 13 ; 5 11 10 8 ; 9 7 6 12 ; 4 14 15 1]
[fila, columna]=size(M);
S_diagonal=0;
for i=1: fila
    for j=1:columna
        if i==j
            S_diagonal=S_diagonal+M(i,j);
            V(i)=M(i,j);
            M(i,j)=0;
        end
    end
end
S_diagonal
V
M



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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