MATLAB - typy danych

MATLAB nie wymaga żadnej deklaracji typu ani instrukcji wymiarów. Ilekroć MATLAB napotka nową nazwę zmiennej, tworzy zmienną i przydziela odpowiednią przestrzeń pamięci.

Jeśli zmienna już istnieje, MATLAB zastępuje oryginalną zawartość nową treścią i przydziela nową przestrzeń do przechowywania, jeśli to konieczne.

Na przykład,

Total = 42

Powyższa instrukcja tworzy macierz 1 na 1 o nazwie „Suma” i przechowuje w niej wartość 42.

Typy danych dostępne w MATLAB

MATLAB zapewnia 15 podstawowych typów danych. Każdy typ danych przechowuje dane w postaci macierzy lub tablicy. Rozmiar tej macierzy lub tablicy to co najmniej 0 na 0 i może wzrosnąć do macierzy lub tablicy o dowolnym rozmiarze.

Poniższa tabela przedstawia najczęściej używane typy danych w MATLAB -

Sr.No. Typ i opis danych
1

int8

8-bitowa liczba całkowita ze znakiem

2

uint8

8-bitowa liczba całkowita bez znaku

3

int16

16-bitowa liczba całkowita ze znakiem

4

uint16

16-bitowa liczba całkowita bez znaku

5

int32

32-bitowa liczba całkowita ze znakiem

6

uint32

32-bitowa liczba całkowita bez znaku

7

int64

64-bitowa liczba całkowita ze znakiem

8

uint64

64-bitowa liczba całkowita bez znaku

9

single

dane liczbowe o pojedynczej precyzji

10

double

dane liczbowe podwójnej precyzji

11

logical

wartości logiczne 1 lub 0 reprezentują odpowiednio prawdę i fałsz

12

char

dane znakowe (łańcuchy są przechowywane jako wektor znaków)

13

cell array

tablica indeksowanych komórek, z których każda może przechowywać tablicę o innym wymiarze i typie danych

14

structure

Struktury podobne do C, każda struktura ma nazwane pola, które mogą przechowywać tablicę o innym wymiarze i typie danych

15

function handle

wskaźnik do funkcji

16

user classes

obiekty zbudowane z klasy zdefiniowanej przez użytkownika

17

java classes

obiekty zbudowane z klasy Java

Przykład

Utwórz plik skryptu z następującym kodem -

str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)

Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -

str = Hello World!
n =  2345
d =  2345
un = 790
rn = 5678.9
c =  5679

Konwersja typu danych

MATLAB zapewnia różne funkcje do konwersji wartości z jednego typu danych na inny. W poniższej tabeli przedstawiono funkcje konwersji typu danych -

Funkcjonować Cel, powód
zwęglać Konwertuj na tablicę znaków (ciąg)
int2str Konwertuj dane całkowite na ciąg
mat2str Konwertuj macierz na ciąg
num2str Konwertuj liczbę na ciąg
str2double Konwertuj ciąg na wartość o podwójnej precyzji
str2num Konwertuj ciąg na liczbę
native2unicode Konwertuj bajty numeryczne na znaki Unicode
unicode2native Konwertuj znaki Unicode na bajty numeryczne
base2dec Konwertuj podstawowy ciąg liczbowy N na liczbę dziesiętną
bin2dec Konwertuj ciąg liczb binarnych na liczbę dziesiętną
dec2base Konwertuj liczbę dziesiętną na podstawową liczbę N w ciągu
dec2bin Zamień liczbę dziesiętną na dwójkową w ciągu
dec2hex Konwertuj liczbę dziesiętną na szesnastkową w ciągu
hex2dec Konwertuj szesnastkowy ciąg liczbowy na liczbę dziesiętną
hex2num Konwertuj szesnastkowy ciąg liczbowy na liczbę podwójnej precyzji
num2hex Konwertuj pojedyncze i podwójne na ciągi szesnastkowe IEEE
cell2mat Konwertuj tablicę komórek na tablicę numeryczną
cell2struct Konwertuj tablicę komórek na tablicę struktur
cellstr Utwórz tablicę komórek zawierającą ciągi znaków z tablicy znaków
mat2cell Konwertuj tablicę na tablicę komórek z potencjalnie różnymi rozmiarami komórek
num2cell Konwertuj tablicę na tablicę komórek z komórkami o stałej wielkości
struct2cell Konwertuj strukturę na tablicę komórek

Określenie typów danych

MATLAB zapewnia różne funkcje do identyfikowania typu danych zmiennej.

Poniższa tabela zawiera funkcje służące do określania typu danych zmiennej -

Funkcjonować Cel, powód
jest Wykryj stan
jest Sprawdź, czy wejście jest obiektem określonej klasy
iscell Określ, czy dane wejściowe to tablica komórek
iscellstr Określ, czy dane wejściowe to tablica komórek zawierająca ciągi
ischar Określ, czy element jest tablicą znaków
isfield Określ, czy wejście jest polem tablicy strukturalnej
jest na powierzchni Określ, czy dane wejściowe są tablicą zmiennoprzecinkową
ishghandle Prawda dla uchwytów obiektów Handle Graphics
isinteger Sprawdź, czy wejście jest tablicą liczb całkowitych
isjava Sprawdź, czy dane wejściowe to obiekt Java
islogical Sprawdź, czy wejście jest tablicą logiczną
isnumeric Sprawdź, czy dane wejściowe to tablica numeryczna
isobject Sprawdź, czy dane wejściowe to obiekt MATLAB
jest realne Sprawdź, czy wejście jest prawdziwą tablicą
isscalar Określ, czy dane wejściowe są skalarne
isstr Określ, czy dane wejściowe to tablica znaków
isstruct Określ, czy dane wejściowe to tablica strukturalna
isvector Określ, czy dane wejściowe są wektorowe
klasa Określ klasę obiektu
validateattributes Sprawdź poprawność tablicy
kto Lista zmiennych w obszarze roboczym, wraz z rozmiarami i typami

Przykład

Utwórz plik skryptu z następującym kodem -

x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
 
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
 
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
 
x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)

Po uruchomieniu pliku daje on następujący wynik -

x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =

          1          2          3

ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0