Jak zdobyć typ zmiennej w MATLAB-ie?

głosy
163

Czy MATLAB posiada funkcję / operatora wskazującą typ zmiennej (podobny do typeofoperatora w JavaScript)?

Utwórz 23/02/2009 o 18:27
źródło użytkownik
W innych językach...                            


6 odpowiedzi

głosy
61

class() Funkcja ta jest odpowiednikiem typeof()

Można również użyć isa(), aby sprawdzić, czy zmienna jest określonego typu. Jeśli chcesz być jeszcze bardziej szczegółowe, można użyć ischar(), isfloat(), iscell(), itd.

Odpowiedział 23/02/2009 o 18:33
źródło użytkownik

głosy
212

Użyj classfunkcji

>> b = 2
b =
     2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
Odpowiedział 23/02/2009 o 18:36
źródło użytkownik

głosy
23

Należy zachować ostrożność podczas korzystania z isafunkcji. To będzie prawdziwe, jeśli obiekt jest określonego typu lub jednej z jej podklas. Trzeba korzystać strcmpz classfunkcji, aby sprawdzić, czy obiekt jest specjalnie tego typu i nie podklasą.

Odpowiedział 11/03/2009 o 21:57
źródło użytkownik

głosy
38

Kolejną funkcją jest powiązany whos. Będzie to lista wszystkich rodzajów informacji (wymiary, wielkość bajtów, typ) dla zmiennych w danym obszarze roboczym.

>> a = [0 0 7];
>> whos a
  Name      Size            Bytes  Class     Attributes

  a         1x3                24  double              

>> b = 'James Bond';
>> whos b
  Name      Size            Bytes  Class    Attributes

  b         1x10               20  char 
Odpowiedział 11/03/2009 o 22:11
źródło użytkownik

głosy
3

Ponieważ nikt nie wspomniał o tym, MATLAB posiada również metaclassfunkcję, która zwraca obiekt z różnych bitów informacji na temat przeszedł w jednostce. Te meta.classobiekty mogą być użyteczne dla badania dziedziczenia (poprzez wspólne operatorów porównania).

Na przykład:

>> metaclass(magic(1))

ans = 

  class with properties:

                     Name: 'double'
              Description: ''
      DetailedDescription: ''
                   Hidden: 0
                   Sealed: 0
                 Abstract: 0
              Enumeration: 0
          ConstructOnLoad: 0
         HandleCompatible: 0
          InferiorClasses: {0×1 cell}
        ContainingPackage: [0×0 meta.package]
     RestrictsSubclassing: 0
             PropertyList: [0×1 meta.property]
               MethodList: [272×1 meta.method]
                EventList: [0×1 meta.event]
    EnumerationMemberList: [0×1 meta.EnumeratedValue]
           SuperclassList: [0×1 meta.class]

>> ?containers.Map <= ?handle

ans =

  logical

   1

Widzimy, że class(someObj)jest równoważne Namepolu wyniku metaclass(someObj).

Odpowiedział 23/10/2017 o 10:38
źródło użytkownik

głosy
0

MATLAB - Sprawdzanie typ zmiennych

Klasa () dokładnie działa jak obsługa JavaScript w typeof operatora.

Aby uzyskać więcej informacji na temat zmiennych można używać kogo polecenia lub whos () funkcji.

Oto przykładowy kod wykonywany na MATLAB R2017a okna poleceń „s.

>> % Define a number
>> num = 67

num =

    67

>> % Get type of variable num
>> class(num)

ans =

    'double'

>> % Define character vector
>> myName = 'Rishikesh Agrawani'

myName =

    'Rishikesh Agrwani'

>> % Check type of myName
>> class(myName)

ans =

    'char'

>> % Define a cell array
>> cellArr = {'This ', 'is ', 'a ', 'big chance to learn ', 'MATLAB.'}; % Cell array
>> 
>> class(cellArr)

ans =

    'cell'

>> % Get more details including type
>> whos num
  Name      Size            Bytes  Class     Attributes

  num       1x1                 8  double              

>> whos myName
  Name        Size            Bytes  Class    Attributes

  myName      1x17               34  char               

>> whos cellArr
  Name         Size            Bytes  Class    Attributes

  cellArr      1x5               634  cell               

>> % Another way to use whos i.e using whos(char_vector)
>> whos('cellArr')
  Name         Size            Bytes  Class    Attributes

  cellArr      1x5               634  cell               

>> whos('num')
  Name      Size            Bytes  Class     Attributes

  num       1x1                 8  double              

>> whos('myName')
  Name        Size            Bytes  Class    Attributes

  myName      1x17               34  char               

>> 
Odpowiedział 10/05/2018 o 09:04
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more