MATLAB matrice diagonale

Ammar Ali 20 giugno 2021
  1. Crea matrice diagonale usando la funzione diag() in MATLAB
  2. Crea matrice diagonale usando la funzione spdiags() in MATLAB
MATLAB matrice diagonale

In questo tutorial, discuteremo come creare una matrice diagonale usando le funzioni diag() e spdiags() in MATLAB.

Crea matrice diagonale usando la funzione diag() in MATLAB

Per creare una matrice diagonale o per ottenere le voci diagonali di una matrice, puoi usare la funzione diag() in MATLAB. Ad esempio, creiamo una matrice diagonale da un dato vettore. Vedi il codice qui sotto.

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

Produzione:

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

Nel codice precedente, abbiamo creato una matrice diagonale 5x5 con le voci diagonali memorizzate nella variabile vector. La funzione diag() crea una matrice quadrata a seconda del numero di elementi presenti all’interno del vettore dato. Se il numero di elementi è 5, la matrice diagonale sarà 5x5. Puoi anche cambiare la posizione della diagonale usando un secondo argomento all’interno della funzione diag(). Se il secondo argomento è uguale a 0, il vettore verrà posizionato sulla diagonale principale. Se il secondo argomento è maggiore di 0, il vettore verrà posizionato sopra la diagonale principale. Se il secondo argomento è minore di 0, il vettore verrà posizionato sotto la diagonale principale. Ad esempio, posizioniamo il vettore sopra la diagonale principale. Vedi il codice qui sotto.

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

Produzione:

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

Nel codice sopra, abbiamo creato una matrice diagonale con gli elementi posizionati sopra la diagonale principale. Come puoi vedere, la dimensione della diagonale è 6x6 ora perché il vettore è posizionato sopra la diagonale principale e per garantire che tutti gli elementi siano posizionati all’interno della matrice, la dimensione della matrice è aumentata. Puoi anche usare la funzione diag() per ottenere le voci diagonali da una matrice. Ad esempio, otteniamo le principali voci diagonali da una data matrice. Vedi il codice qui sotto.

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

Produzione:

vector =

     1     2     3
     4     5     6
     7     8     9


diagonal =

     1
     5
     9

Nel codice precedente, abbiamo usato la funzione diag() per trovare le voci diagonali dalla matrice data, e puoi vedere la funzione restituita le voci diagonali della matrice data. Puoi anche ottenere le voci diagonali sopra e sotto la diagonale principale usando il secondo argomento all’interno della funzione diag() come abbiamo usato sopra per creare la matrice diagonale con elementi sopra la diagonale principale. Controlla questo link per maggiori informazioni sulla funzione diag().

Crea matrice diagonale usando la funzione spdiags() in MATLAB

Per creare una matrice diagonale con più di una diagonale o per ottenere tutte le voci diagonali di una matrice, puoi usare la funzione spdiags() in MATLAB. Il primo argomento passato all’interno della funzione spdiags() sono i valori, il secondo argomento sono le posizioni diagonali e il terzo e quarto argomento sono le dimensioni della matrice diagonale. Ad esempio, creiamo una matrice tridiagonale da un dato vettore. Vedi il codice qui sotto.

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)

Produzione:

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

Nel codice precedente, abbiamo creato una matrice tridiagonale 5x5 con le voci diagonali memorizzate all’interno delle tre variabili: v1, v2 e v3. Puoi creare la matrice diagonale con tutti i valori che desideri. Puoi anche cambiare i valori diagonali di una data matrice usando la funzione springs(). A tale scopo, passare i nuovi valori nel primo argomento, la posizione dei valori come secondo argomento e la matrice di cui si desidera modificare i valori come terzo argomento. Ad esempio, cambiamo le principali voci diagonali della matrice tridiagonale sopra. Vedi il codice qui sotto.

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)

Produzione:

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

Nel codice sopra, abbiamo modificato i valori della diagonale principale di matrix1. I valori vengono modificati e la nuova matrice viene salvata nella variabile matrix2. Puoi anche estrarre tutte le voci diagonali diverse da zero da una data matrice usando la funzione spdaigs(). Ad esempio, estraiamo le voci diverse da zero della matrice sopra. Vedi il codice qui sotto.

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)

Produzione:

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

I valori diagonali della matrice data vengono estratti e memorizzati all’interno della variabile diag_values. I valori diagonali vengono memorizzati nelle colonne della matrice. Le prime voci diagonali vengono memorizzate nella prima colonna e così via. Controlla questo link per maggiori informazioni sulla funzione diag().

Autore: 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

Articolo correlato - MATLAB Matrix