MATLAB – Números: Tipos, Armazenamento e Conversão
O MATLAB suporta várias classes numéricas: inteiros com e sem sinal, e números de ponto flutuante de precisão simples e dupla. Por padrão, armazena todos os valores numéricos como double (precisão dupla).
Você pode optar por armazenar números como inteiros ou single (precisão simples). Todos os tipos numéricos suportam operações básicas de array e matemáticas.
Conversão para Tipos Numéricos
Funções para converter entre tipos:
| Função | Finalidade |
|---|---|
| double | Converte para double precision |
| single | Converte para single precision |
| int8 | Converte para inteiro de 8 bits com sinal |
| int16 | Converte para inteiro de 16 bits com sinal |
| int32 | Converte para inteiro de 32 bits com sinal |
| int64 | Converte para inteiro de 64 bits com sinal |
| uint8 | Converte para inteiro de 8 bits sem sinal |
| uint16 | Converte para inteiro de 16 bits sem sinal |
| uint32 | Converte para inteiro de 32 bits sem sinal |
| uint64 | Converte para inteiro de 64 bits sem sinal |
Exemplo de Conversão
x = single([5.32 3.47 6.28]) .* 7.5 x = double([5.32 3.47 6.28]) .* 7.5 x = int8([5.32 3.47 6.28]) .* 7.5 x = int16([5.32 3.47 6.28]) .* 7.5 x = int32([5.32 3.47 6.28]) .* 7.5 x = int64([5.32 3.47 6.28]) .* 7.5
Resultado (valores arredondados para inteiros nos tipos inteiros):
x = 39.900 26.025 47.100 (single) x = 39.900 26.025 47.100 (double) x = 38 23 45 (int8, int16, int32, int64)
Exemplo Adicional: Conversão para Cell Array
x = int32([5.32 3.47 6.28]) .* 7.5; x = int64([5.32 3.47 6.28]) .* 7.5; x = num2cell(x)
Resultado:
x = { [1,1] = 38; [1,2] = 23; [1,3] = 45 }
Menores e Maiores Inteiros
As funções intmax() e intmin() retornam os valores máximos e mínimos representáveis para cada tipo inteiro.
Exemplo: intmax('int8') retorna 127; intmin('int64') retorna -9.22e18.
Exemplo Completo
str = 'The range for int8 is:\n\t%d to %d ';
sprintf(str, intmin('int8'), intmax('int8'))
% ... repetir para int16, int32, int64, uint8, uint16, uint32, uint64
Resultado típico:
int8: -128 to 127 int16: -32768 to 32767 int32: -2147483648 to 2147483647 int64: -9223372036854775808 to 9223372036854775807 uint8: 0 to 255 uint16: 0 to 65535 uint32: 0 to 4294967295 uint64: 0 to 18446744073709551615
Menores e Maiores Números de Ponto Flutuante
As funções realmax() e realmin() retornam os limites para single e double.
Exemplo
str = 'The range for single is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('single'), -realmin('single'), realmin('single'), realmax('single'))
str = 'The range for double is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('double'), -realmin('double'), realmin('double'), realmax('double'))
Resultado:
single: -3.40282e+38 to -1.17549e-38 and 1.17549e-38 to 3.40282e+38 double: -1.79769e+308 to -2.22507e-308 and 2.22507e-308 to 1.79769e+308
MATLAB
- Números vs. Numeração: Entendendo a Distinção e Seu Impacto Prático
- MATLAB: Visão Geral Abrangente do Ambiente Líder em Computação Numérica
- Entendendo Variáveis no MATLAB: Fundamentos e Exemplos
- Comandos Essenciais do MATLAB para Computação Eficiente
- Entendendo Tipos de Dados no MATLAB: Guia Completo
- Dominando Operadores MATLAB: Guia Completo de Operações Aritméticas, Lógicas e Bitwise
- Domine Matrizes no MATLAB: Criação, Referência e Manipulação de Dados
- MATLAB: Dominando Arrays Multidimensionais e Especiais
- Dominando a Notação Dois-Pontos no MATLAB: Crie Vetores e Itere com Eficiência
- Dominando Strings no MATLAB: Criação e Uso Prático