Tipo de matriz
Uma matriz é um tipo de dados que contém entre um e dezesseis componentes escalares em uma grade bidimensional. Cada componente de uma matriz deve ser do mesmo tipo.
Declaração de Tipo
Você pode declarar variáveis de matriz usando o tipo escalar nome do conteúdo da matriz com o número de linhas e colunas que ela contém:
TypeRowsCols Name
Quando Type
é o tipo escalar de cada um dos componentes, Rows
é uma expressão inteiro constante entre 1 e 4 inclusive indicando o número de linhas, Cols
é uma expressão inteiro constante entre 1 e 4 inclusive indicando que o número de colunas e Name
é uma cadeia de caracteres ASCII que identifica exclusivamente o nome da variável.
Exemplos:
int1x1 iMatrix; // integer matrix with 1 row, 1 column, 1 single component
int4x1 iMatrix; // integer matrix with 4 rows, 1 column, 4 total components
int1x4 iMatrix; // integer matrix with 1 row, 4 columns, 4 total components
double3x3 dMatrix; // double matrix with 3 rows, 3 columns, 9 total components
float3x2 fMatrix = { 0.0f, 0.1f, // row 1
2.1f, 2.2f, // row 2
4.1f, 4.2f // row 3
};
Declaração de estilo de modelo
Uma sintaxe de declaração alternativa usa a palavra-chave matrix
e os argumentos de modelo para indicar o tipo escalar, o número de linhas e o número de colunas:
matrix <Type=float, Rows=4, Cols=4> Name
Quando Type
é o tipo escalar de cada um dos componentes, Rows
é um número inteiro entre 1 e 4 inclusive indicando o número de linhas, Cols
é um inteiro entre 1 e 4 inclusive indicando o número de colunas, mas elas são especificadas dentro de colchetes angulares estilo modelo.
Name
é uma cadeia de caracteres ASCII que identifica exclusivamente o nome da variável.
Observe que os padrões de parâmetro de modelo permitem especificar matrtices de 4 colunas de um determinado tipo e contagem de linhas, deixando de fora o último parâmetro, uma matriz 4x4 de um determinado tipo, deixando de fora os dois últimos parâmetros de modelo ou matrizes flutuantes 4x4 deixando de fora todos os três.
Exemplos:
matrix <int, 1, 1> iMatrix = { 1 };
matrix <float, 2, 3> fMatrix = { 0.0f, 0.1f, 0.2f, // row 1
2.1f, 2.2f, 2.3f // row 2
};
matrix<int16_t, 1> sMatrix = { 1, 2, 3, 4 }; // Defaults to 1x4 int16 matrix
matrix<float16_t> hMatrix = { 0.0f, 0.1f, 0.2f, 0.3f, // Defaults to 4x4 float16 matrix
1.0f, 1.1f, 1.2f, 1.3f,
2.0f, 2.1f, 2.2f, 2.3f,
3.0f, 3.1f, 3.2f, 3.3f };
matrix fMatrix = { 0.0f, 0.1f, 0.2f, 0.3f, // Defaults to 4x4 float matrix
1.0f, 1.1f, 1.2f, 1.3f,
2.0f, 2.1f, 2.2f, 2.3f,
3.0f, 3.1f, 3.2f, 3.3f };