Soru sorVektör içinden veri bulma
seyma7 tarafından 3 yıl önce soruldu

Merhabalar elimde kendim oluşturduğum yaklaşık 300 tane element içeren bir x vektörüm var. Mesela 1 sayısının vektörümün içerisinde kaç tane olduğunu öğrenmek için
ans1=sum(x=='1')
şeklinde yapıyorum. Fakat eğer vektör içerisinden 12 yani kaç tane yan yana bir ve iki olduğunu öğrenmek için aynı fonksiyonu yazdığımda çalışmıyor. Acaba vektörüm içerisinde bu şekilde sıralı olan dizileri bulmak için ne yapmam gerekiyor?
Vakti olan biri cevaplayabilirse çok memnun olurum. Herkese iyi çalışmalar dilerim.

4 Cevap
Caglar Yönetici tarafından 3 yıl önce cevaplandı

Merhaba,
Vektörünüz sanırım char türünde, yani degisken='1231234123' seklinde olusturulmus, dogru mudur?
 

seyma7 tarafından 3 yıl önce cevaplandı

Evet. x='12356248641235264212..' şeklinde oluşturdum. 

Caglar Yönetici tarafından 3 yıl önce cevaplandı

Bu şekilde aslında her elemanı bir harf olan karakter dizisi oluşturmuş oluyorsunuz. Ekranda yanyana görünmeleri sizi aldatmasın.

Yani sayılar üzerinden örnek verirsem, değişkeniniz ornek=12356; şeklinde bir değişken değil bir dizi, yani ornek = [1 2 3 5 6]; şeklinde. Haliyle eşitlik kontrolünde tek tek eleman bulabiliyorsunuz, ama yanyana olanları bulamıyorsunuz. Son oluşturduğum ornek değişkeninde de ornek == 2 gibi tek tek rakamlar bulunabilir ama ornek == 23 derseniz hiç bir eleman 23 olmadığı için sonuç alamazsınız.

Sonuç olarak, siz metin içinde metin arıyorsunuz. Bunun için strfind kullanabilirsiniz:

str = 'Find the starting indices of substrings in a character vector';
k = strfind(str,'in')
k = 1×5

     2    15    19    36    41

strfind bulunan metin parçacıklarının başlangıç konumlarını verecek, onun da sadece adedini merak ediyorsanız length() fonksiyonuna göndererek adedini öğrenebilirsiniz:

length(k)
5
https://www.mathworks.com/help/matlab/ref/strfind.html
seyma7 tarafından 3 yıl önce cevaplandı

Çok teşekkür ederim. Evet dediğiniz şekilde dizimde 12 olmadığı için bir türlü bulamıyordum, bu şekilde deneyeceğim.