... mı acaba?
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ı?