Matriz Diagonal MATLAB
-
Faça a matriz diagonal usando a função
diag()
no MATLAB -
Faça a matriz diagonal usando a função
spdiags()
no MATLAB
Neste tutorial, discutiremos como fazer um array diagonal usando as funções diag()
e spdiags()
no MATLAB.
Faça a matriz diagonal usando a função diag()
no MATLAB
Para fazer um array diagonal ou obter as entradas diagonais de um array, você pode usar a função diag()
no MATLAB. Por exemplo, vamos fazer um array diagonal de um determinado vetor. Veja o código abaixo.
vector = [1 2 3 4 5];
diagonal = diag(vector)
Resultado:
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
No código acima, fizemos um array diagonal 5x5
com as entradas diagonais armazenadas na variável vetor
. A função diag()
cria um array quadrada dependendo do número de elementos presentes dentro do vetor dado. Se o número de elementos for 5, a matriz diagonal será 5x5
. Você também pode alterar a posição da diagonal usando um segundo argumento dentro da função diag()
. Se o segundo argumento for igual a 0, o vetor será colocado na diagonal principal. Se o segundo argumento for maior que 0, o vetor será colocado acima da diagonal principal. Se o segundo argumento for menor que 0, o vetor será colocado abaixo da diagonal principal. Por exemplo, vamos colocar o vetor acima da diagonal principal. Veja o código abaixo.
vector = [1 2 3 4 5];
diagonal = diag(vector,1)
Resultado:
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
No código acima, criamos um array diagonal com os elementos colocados acima da diagonal principal. Como você pode ver, o tamanho da diagonal é 6x6
agora porque o vetor é colocado acima da diagonal principal e, para garantir que todos os elementos sejam colocados dentro do array, o tamanho do array aumentou. Você também pode usar a função diag()
para obter as entradas diagonais de um array. Por exemplo, vamos obter as principais entradas diagonais de uma determinada matriz. Veja o código abaixo.
vector = [1 2 3;4 5 6;7 8 9]
diagonal = diag(vector)
Resultado:
vector =
1 2 3
4 5 6
7 8 9
diagonal =
1
5
9
No código acima, usamos a função diag()
para encontrar as entradas diagonais do array fornecida, e você pode ver que a função retornou as entradas diagonais do array fornecida. Você também pode obter as entradas da diagonal acima e abaixo da diagonal principal usando o segundo argumento dentro da função diag()
como usamos acima para fazer a matriz diagonal com elementos acima da diagonal principal. Verifique este link para mais informações sobre a função diag()
.
Faça a matriz diagonal usando a função spdiags()
no MATLAB
Para fazer um array diagonal com mais de uma diagonal ou para obter todas as entradas diagonais de um array, você pode usar a função spdiags()
no MATLAB. O primeiro argumento passado dentro da função spdiags()
são os valores, o segundo argumento são as casas diagonais e o terceiro e quarto argumentos são o tamanho do array diagonal. Por exemplo, vamos fazer um array tridiagonal de um determinado vetor. Veja o código abaixo.
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)
Resultado:
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
No código acima, fizemos um array tridiagonal 5x5
com as entradas diagonais armazenadas dentro das três variáveis: v1
, v2
e v3
. Você pode criar a matriz diagonal com quantos valores desejar. Você também pode alterar os valores diagonais de uma determinada matriz usando a função springs()
. Para fazer isso, passe os novos valores no primeiro argumento, o local dos valores como o segundo argumento e a matriz cujos valores você deseja alterar como o terceiro argumento. Por exemplo, vamos mudar as entradas diagonais principais do array tridiagonal acima. Veja o código abaixo.
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)
Resultado:
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
No código acima, mudamos os valores da diagonal principal da array1
. Os valores são alterados e a nova matriz é salva na variável array2
. Você também pode extrair todas as entradas diagonais diferentes de zero de uma determinada matriz usando a função spdaigs()
. Por exemplo, vamos extrair as entradas diferentes de zero do array acima. Veja o código abaixo.
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)
Resultado:
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
Os valores diagonais do array dada são extraídos e armazenados dentro da variável diag_values
. Os valores diagonais são armazenados nas colunas do array. As primeiras entradas diagonais são armazenadas na primeira coluna e assim por diante. Verifique este link para mais informações sobre a função diag()
.