Matriz diagonal de MATLAB

Ammar Ali 30 enero 2023
  1. Haga un array diagonal usando la función diag() en MATLAB
  2. Haga un array diagonal usando la función spdiags() en MATLAB
Matriz diagonal de MATLAB

En este tutorial, discutiremos cómo hacer un array diagonal usando las funciones diag() y spdiags() en MATLAB.

Haga un array diagonal usando la función diag() en MATLAB

Para hacer un array diagonal o para obtener las entradas diagonales de un array, puede usar la función diag() en MATLAB. Por ejemplo, hagamos un array diagonal a partir de un vector dado. Vea el código a continuación.

vector = [1 2 3 4 5];
diagonal = diag(vector)

Producción :

diagonal =

     1     0     0     0     0
     0     2     0     0     0
     0     0     3     0     0
     0     0     0     4     0
     0     0     0     0     5

En el código anterior, hicimos un array diagonal 5x5 con las entradas diagonales almacenadas en la variable vector. La función diag() crea un array cuadrada dependiendo del número de elementos presentes dentro del vector dado. Si el número de elementos es 5, entonces el array diagonal será 5x5. También puede cambiar la posición de la diagonal usando un segundo argumento dentro de la función diag(). Si el segundo argumento es igual a 0, el vector se colocará en la diagonal principal. Si el segundo argumento es mayor que 0, el vector se colocará por encima de la diagonal principal. Si el segundo argumento es menor que 0, el vector se colocará debajo de la diagonal principal. Por ejemplo, coloquemos el vector sobre la diagonal principal. Vea el código a continuación.

vector = [1 2 3 4 5];
diagonal = diag(vector,1)

Producción :

diagonal =

     0     1     0     0     0     0
     0     0     2     0     0     0
     0     0     0     3     0     0
     0     0     0     0     4     0
     0     0     0     0     0     5
     0     0     0     0     0     0

En el código anterior, creamos un array diagonal con los elementos colocados sobre la diagonal principal. Como puede ver, el tamaño de la diagonal es 6x6 ahora porque el vector se coloca por encima de la diagonal principal, y para garantizar que todos los elementos se coloquen dentro del array, el tamaño del array aumentó. También puede utilizar la función diag() para obtener las entradas diagonales de un array. Por ejemplo, obtengamos las entradas diagonales principales de un array dada. Vea el código a continuación.

vector = [1 2 3;4 5 6;7 8 9]
diagonal = diag(vector)

Producción :

vector =

     1     2     3
     4     5     6
     7     8     9


diagonal =

     1
     5
     9

En el código anterior, usamos la función diag() para encontrar las entradas diagonales del array dada, y puede ver que la función devolvió las entradas diagonales del array dada. También puede obtener las entradas diagonales por encima y por debajo de la diagonal principal usando el segundo argumento dentro de la función diag() como usamos anteriormente para hacer el array diagonal con elementos por encima de la diagonal principal. Consulte este enlace para obtener más información sobre la función diag().

Haga un array diagonal usando la función spdiags() en MATLAB

Para hacer un array diagonal con más de una diagonal o para obtener todas las entradas diagonales de un array, puede usar la función spdiags() en MATLAB. El primer argumento pasado dentro de la función spdiags() son los valores, el segundo argumento son los lugares diagonales y el tercer y cuarto argumento es el tamaño del array diagonal. Por ejemplo, hagamos un array tridiagonal a partir de un vector dado. Vea el código a continuación.

v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix = full(diagonal)

Producción :

matrix =

     1     3     0     0     0
     2     2     3     0     0
     0     2     3     3     0
     0     0     2     4     3
     0     0     0     2     5

En el código anterior, hicimos un array tridiagonal 5x5 con las entradas diagonales almacenadas dentro de las tres variables: v1, v2 y v3. Puede crear el array diagonal con tantos valores como desee. También puede cambiar los valores diagonales de un array dada usando la función springs(). Para hacer eso, pase los nuevos valores en el primer argumento, el lugar de los valores como el segundo argumento y el array cuyos valores desea cambiar como el tercer argumento. Por ejemplo, cambiemos las entradas diagonales principales del array tridiagonal anterior. Vea el código a continuación.

v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix1 = full(diagonal)

v4 = [9 9 9 9 9].';
diagonal = spdiags(v4,0,diagonal);
matrix2 = full(diagonal)

Producción :

matrix1 =

     1     3     0     0     0
     2     2     3     0     0
     0     2     3     3     0
     0     0     2     4     3
     0     0     0     2     5


matrix2 =

     9     3     0     0     0
     2     9     3     0     0
     0     2     9     3     0
     0     0     2     9     3
     0     0     0     2     9

En el código anterior, cambiamos los valores de la diagonal principal de array1. Los valores se modifican y la nueva matriz se guarda en la variable array2. También puede extraer todas las entradas diagonales distintas de cero de un array dada utilizando la función spdaigs(). Por ejemplo, extraigamos las entradas distintas de cero del array anterior. Vea el código a continuación.

v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix = full(diagonal)

diag_Values = spdiags(matrix)

Producción :

matrix =

     1     3     0     0     0
     2     2     3     0     0
     0     2     3     3     0
     0     0     2     4     3
     0     0     0     2     5


diag_Values =

     2     1     0
     2     2     3
     2     3     3
     2     4     3
     0     5     3

Los valores diagonales del array dada se extraen y almacenan dentro de la variable diag_values. Los valores diagonales se almacenan en las columnas del array. Las primeras entradas diagonales se almacenan en la primera columna y así sucesivamente. Consulte este enlace para obtener más información sobre la función diag().

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Artículo relacionado - MATLAB Matrix