MATLAB kullanırken eldeki verinin belli özelliklere sahip olup olmadığını öğrenmek için çokça hazır fonksiyon mevcut. Bunlar genellikle is ile başlıyor. Örneğin isnan ile eldeki dizilimin hangi değerlerinin NaN (Not-a-Number, Sayı Değil) olduğunu öğrenebilirsiniz.

x = [1 2 3 NaN];
isnan(x)

ans =
0 0 0 1

Görüldüğü üzere dört elemanlı mantıksal bir değişken döndü. Dördüncü değeri doğru (yani 1), diğerleri yanlış (yani 0). isnan'ın döndürdüğü değişkenin boyutları x ile aynı. Şöyle ki, eğer sütun vektörü veya matris olsaydı, boyutlar ona göre dönecekti:

y = [1;2;3;NaN];
isnan(y)
ans =
0
0
0
1

z = [1 2; 3 NaN];
isnan(z)
ans =
     0     0
     0     1

Yazının başında bahsettiğim gibi, birçok "mı acaba?" fonksiyonu var ve isnan yalnızca bunlardan biri. Genel listeye buradan ulaşabilirsiniz. Sorgudaki nesnenin hangi sınıfa ait olduğunu anlamak için isa fonksiyonu kullanılabilir. Örneğin:

isa(z,'numeric')
ans =
     1

isa(z,'double')
ans =
     1

isa('ismail','double')
ans =
     0

isa('ismail','char')
ans =
     1

isa(isnan(z),'logical')
ans =
     1

isa fonksiyonunda sorgulayabileceğiniz veri türleri şu listede mevcut. İsterseniz veri türlerinin bir kısmı için yazılmış özel fonksiyonları da tercih edebilirsiniz:

isnumeric(z)
ans =
     1

ischar('ismail')
ans =
     1
 
islogical([true false])
ans =
     1

Daha birçok fonksiyon var. Genel bir fikrimiz olsun diye yazının kalanına örnek kod parçacıkları ekliyorum. "mı acaba?" fonksiyonları dışında kullandığım fonksiyonlar için MATLAB Yardım'a başvurabilirsiniz. Dikkat edin, üstteki kodlarda komut satırında kendiliğinden gelen >> işaretini kaldırmıştım, anlaşılabilirliği arttırdığı için altta bıraktım.

>> x = 0:4;
>> y = x ./ 0
y =
   NaN   Inf   Inf   Inf   Inf
>> isnan(y)
ans =
     1     0     0     0     0
>> any(isnan(y)) % Herhangi biri NaN mı acaba?
ans =
     1
>> isinf(y)
ans =
     0     1     1     1     1
>> all(isinf(y)) % Hepsi sonsuz mu acaba?
ans =
     0
>> isfinite(x)
ans =
     1     1     1     1     1
>> isfinite(y) % Dikkat: ~isinf ile aynı şey değil, çünkü NaN sonlu bir sayı değil
ans =
     0     0     0     0     0

Asal mı acaba?

>> isprime(x)
ans =
     0     0     1     1     0
>> x = 0:100; % Birden 100'e kadar asal sayıları seçeceğiz alt satırda
>> x(~isprime(x)) = []
x =
  Columns 1 through 13
     2     3     5     7    11    13    17    19    23    29    31    37    41
  Columns 14 through 25
    43    47    53    59    61    67    71    73    79    83    89    97

Boş mu acaba?

>> isempty(0)
ans =
     0
>> isempty([])
ans =
     1
>> isempty('')
ans =
     1
>> isempty({})
ans =
     1
>> isempty({'a', '', 8, []})
ans =
     0

İşletim sistemi ne acaba?

>> ispc
ans =
     1
>> ismac
ans =
     0 
>> isunix
ans =
     0

Sıralı mı acaba?

>> issorted([1 2 3])
ans =
     1
>> issorted('abcd')
ans =
     1
>> issorted([1 3 2])
ans =
     0
>> issorted('ismail')
ans =
     0

Skaler mi, vektör mü, yoksa matris mi acaba? Vektörse nasıl bir vektör?

>> isscalar(1)
ans =
     1
>> isscalar([1 2])
ans =
     0
>> isvector(1)
ans =
     1
>> isvector([1 2])
ans =
     1
>> isvector([1 2;3 4])
ans =
     0
>> ismatrix([1 2;3 4])
ans =
     1
>> isrow(1)
ans =
     1
>> isrow([1 2])
ans =
     1
>> isrow([1;2])
ans =
     0
>> iscolumn([1;2])
ans =
     1

Eşitler mi acaba?

>> x = 1:10;
>> y = (1:10)'; % Sütun vektör olsun
>> isequal(x,y)
ans =
     0
>> isequal(x,y')
ans =
     1
>> isequal(x(:),y(:))
ans =
     1
>> x(end) = NaN;
>> y(end) = NaN;
>> isequal(x(:),y(:))
ans =
     0
>> isequalwithequalnans(x(:),y(:)) % NaN'lar eşit sayılsın
ans =
     1

Sizin kullandığınız, hoş bulduğunuz örnekler var mı?