Bagaimana cara mendapatkan jenis variabel di MATLAB?


188

Apakah MATLAB memiliki fungsi / operator yang menunjukkan jenis variabel (mirip dengan typeofoperator dalam JavaScript)?

Jawaban:


231

Gunakan classfungsinya

>> b = 2
b =
     2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char

untuk persyaratan:if ( string(class(b)) == 'double' ) fprintf(1, 'b is double'); end
khaverim

70

class() fungsi adalah setara dengan typeof()

Anda juga dapat menggunakan isa()untuk memeriksa apakah suatu variabel adalah tipe tertentu. Jika Anda ingin menjadi lebih spesifik, Anda dapat menggunakan ischar(), isfloat(), iscell(), dll


44

Fungsi terkait lainnya adalah whos. Ini akan mencantumkan semua jenis informasi (dimensi, ukuran byte, tipe) untuk variabel di ruang kerja yang diberikan.

>> 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 

1
Fungsi WHO tidak mencantumkan ukuran variabel. Karena itu jauh lebih cepat jika ruang kerja Anda penuh sesak.
JaBe

27

Hati-hati saat menggunakan isafungsi ini. Ini akan benar jika objek Anda adalah tipe yang ditentukan atau salah satu dari subkelasnya. Anda harus menggunakan strcmpdengan classfungsi untuk menguji apakah objek secara khusus tipe itu dan bukan subkelas.


5

Karena tidak ada yang menyebutkannya, MATLAB juga memiliki metaclassfungsi, yang mengembalikan objek dengan berbagai bit informasi tentang entitas yang lewat. Inimeta.classObjek objek ini dapat berguna untuk pengujian warisan (melalui operator pembanding umum).

Sebagai contoh:

>> 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

Kita dapat melihat bahwa class(someObj)itu setara dengan Namebidang hasil metaclass(someObj).


0

MATLAB - Memeriksa jenis variabel

class () persis bekerja seperti operator typeof Javascript .

Untuk mendapatkan rincian lebih lanjut tentang variabel yang dapat digunakan whos perintah atau () whos fungsi.

Berikut adalah contoh kode yang dieksekusi pada Command Window MATLAB R2017a .

>> % 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               

>> 

3
Ini tidak menambahkan apa pun ke jawaban yang saat ini diterima.
rayryeng
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.