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