Afinador
Tipos de dados
Tipos de dados em Matlab
M AT L AB D a ta T yp e s
double
double precision (real and com plex)
single
single precision (real and com plex)
int8, int16, int32, int64,
unit8 uint16 unit32 unint64
logical
logical data
char
character strings
integer and unsigned integer data types
cell
cell arrays
structure
structures
user classesobjects
function handles
function handles
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
2
Funções para strings
>> cadeia = 'Isto sao caracteres'; >> whos cadeia Name Size Bytes cadeia 1x19 38 Grand total is 19 elements using 38 bytes >> x = double(cadeia) x = Columns 1 through 11 73 115 116 111 Columns 12 through 19 114 97 99 116 >> z = char(x) z = Isto saocaracteres
Class char array
32
115
97
111
32
99
97
101
114
101
115
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
3
Arrays de caracteres
>> nome = ['Joao M. C. Sousa';'Engenheiro'] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns. >> nome = char('Joao M. C.Sousa','Engenheiro') nome = Joao M. C. Sousa Engenheiro >> linha2 = nome(2,:); >> ['*' linha2 '*'] ans = *Engenheiro * >> linha2_s_brancos = deblank(nome(2,:)); >> ['*' linha2_s_brancos '*'] ans = *Engenheiro*
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
4
Comparação de strings
>> cad1 = 'ola'; >> cad2 = 'Ola'; >> cad3 = 'olaria'; >> c = strcmp(cad1,cad2) c = 0 >> c =strcmpi(cad1,cad2) c = 1 >> c = strncmp(cad1,cad3,3) c = 1 >> a = 'faca'; >> b = 'lata'; >> res = a == b res = 0 1
João Sousa – Miguel Pedro Silva
0
1
Computação e Programação 2007 / 2008
5
Tipo de dados single
>> var = single(3.1) var = 3.1000 >> whos Name Size Bytes var 1x1 4 Grand total is 1 element using 4 bytes >> b = 7; >> c = var * b c = 21.7000 >> whos Name Size Bytes b 1x1 8 c 1x1 4 var1x1 4 Grand total is 3 elements using 16 bytes
Class single array
Class double array single array single array
A operação de um single com um double retorna um single! Na maior parte das linguagens (Fortran, C, C++, Java) o resultado seria um double.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
6
Tipos de dados inteiro YYY
Existem oito tipos de dadosinteiros em Matlab: int8, int16, int32, int64, uint8, uint16, uint32, uint64. Os números n = 8, 16, 32 e 64 correspondem ao número de bits do inteiro. Exemplos:
28 = 256, 216 = 65536, etc. uint são inteiros sem sinal. Exemplos: int8 – inteiros de -128 a 127 uint8 – inteiros de 0 a 255 (utilizado em RGB, por exemplo)
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
7Exemplos com inteiros ZZZ
>> var = int8(3) var = 3 >> whos Name Size Bytes var 1x1 1 Grand total is 1 element using 1 bytes >> b=7; >> c = var * b c = 21 >> whos Name b c var Grand total Size Bytes 1x1 8 1x1 1 1x1 1 is 3 elements using 10 bytes Class double array int8 array int8 array Class int8 array
A operação de um int com um double retorna um int! Na maior parte das linguagens (Fortran,C, C++, Java, Basic, etc.) o resultado seria um double.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
8
Características de inteiros e single
Matlab utiliza saturação aritmética de inteiros.
Quando o resultado de uma operação é maior que o maior número possível, retorna este último valor.
Exemplo: Em int8, a soma: int8(100)+int8(50) retorna 127. Os tipos intnão podem ser operados com single. Os tipos int e single devem apenas ser utilizados quando explicitamente necessário. Um exemplo é em processamento de imagem (cores RGB).
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
9
Tipo de dados complexo
>> complexo1 = 4 + i*3 complexo1 = 4.0000 + 3.0000i >> complexo1 = 4 + 3i complexo1 = 4.0000 + 3.0000i
imaginary axis...
Regístrate para leer el documento completo.