MATLAB - Dizeler
MATLAB'da bir karakter dizisi oluşturmak oldukça basittir. Aslında onu birçok kez kullandık. Örneğin, komut istemine şunu yazarsınız -
my_string = 'Tutorials Point'
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
my_string = Tutorials Point
MATLAB, tüm değişkenleri diziler olarak kabul eder ve dizeler, karakter dizileri olarak kabul edilir. Kullanalımwhos yukarıda oluşturulan değişkeni kontrol etmek için komut -
whos
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
Name Size Bytes Class Attributes
my_string 1x16 32 char
İlginç bir şekilde, sayısal dönüştürme işlevlerini kullanabilirsiniz. uint8 veya uint16dizedeki karakterleri sayısal kodlarına dönüştürmek için. char fonksiyon tamsayı vektörünü tekrar karakterlere dönüştürür -
Misal
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string) % 8-bit ascii values
str_back_to_char= char(str_ascii)
str_16bit = uint16(my_string) % 16-bit ascii values
str_back_to_char = char(str_16bit)
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
str_ascii =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
str_16bit =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
Dikdörtgen Karakter Dizisi
Şimdiye kadar tartıştığımız dizeler tek boyutlu karakter dizileridir; ancak bundan daha fazlasını depolamamız gerekiyor. Programımızda daha boyutlu metinsel verileri depolamamız gerekiyor. Bu, dikdörtgen karakter dizileri oluşturarak elde edilir.
Dikdörtgen bir karakter dizisi oluşturmanın en basit yolu, iki veya daha fazla tek boyutlu karakter dizisini gerektiği gibi dikey veya yatay olarak birleştirmektir.
Dizeleri dikey olarak aşağıdaki yollardan biriyle birleştirebilirsiniz -
MATLAB birleştirme operatörünü kullanma []ve her satırı bir noktalı virgülle (;) ayırmak. Lütfen bu yöntemde her satırın aynı sayıda karakter içermesi gerektiğini unutmayın. Farklı uzunluktaki dizeler için, gerektiğinde boşluk karakterleri ile doldurmalısınız.
Kullanmak charişlevi. Dizeler farklı uzunluklarda ise karakter, her satırın aynı sayıda karaktere sahip olması için kısa dizeleri sonda boşluklarla doldurur.
Misal
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
Dizeleri aşağıdaki yöntemlerden biriyle yatay olarak birleştirebilirsiniz -
MATLAB birleştirme operatörünü kullanarak, []ve giriş dizelerini virgül veya boşlukla ayırmak. Bu yöntem, giriş dizilerindeki sondaki boşlukları korur.
Dize birleştirme işlevini kullanarak, strcat. Bu yöntem, girişlerdeki sondaki boşlukları kaldırır.
Misal
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
Dizeleri Hücre Dizisinde Birleştirme
Önceki tartışmamızdan, dizideki tüm dizelerin aynı uzunlukta olması gerektiğinden, farklı uzunluklardaki dizeleri birleştirmenin bir acı olabileceği açıktır. Uzunluklarını eşitlemek için dizelerin sonunda boşluklar kullandık.
Bununla birlikte, dizeleri birleştirmenin daha verimli bir yolu, ortaya çıkan diziyi bir hücre dizisine dönüştürmektir.
MATLAB hücre dizisi, bir dizide farklı boyut ve veri türlerini tutabilir. Hücre dizileri, değişen uzunluktaki dizeleri depolamak için daha esnek bir yol sağlar.
cellstr işlev bir karakter dizisini dizelerden oluşan bir hücre dizisine dönüştürür.
Misal
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
MATLAB'da String Fonksiyonları
MATLAB, dizeleri oluşturan, birleştiren, ayrıştıran, karşılaştıran ve değiştiren çok sayıda dize işlevi sağlar.
Aşağıdaki tablo, MATLAB'daki dizi işlevlerinin kısa açıklamasını sağlar -
Fonksiyon | Amaç |
---|---|
Metni karakter dizilerinde saklamak, karakter dizilerini birleştirmek vb. İçin işlevler. | |
boşluklar | Boş karakter dizesi oluşturun |
Cellstr | Karakter dizisinden hücre dizisi dizisi oluşturun |
kömür | Karakter dizisine (dize) dönüştür |
iscellstr | Girdinin dizelerin hücre dizisi olup olmadığını belirleme |
ischar | Öğenin karakter dizisi olup olmadığını belirleyin |
sprintf | Verileri dizeye biçimlendir |
strcat | Dizeleri yatay olarak birleştir |
strjoin | Hücre dizisindeki dizeleri tek dizede birleştirin |
Dizelerin parçalarını tanımlama, alt dizeleri bulma ve değiştirme işlevleri | |
ischar | Öğenin karakter dizisi olup olmadığını belirleyin |
adacık | Alfabetik harflerden oluşan dizi öğeleri |
isspace | Uzay karakterleri olan dizi öğeleri |
isstrprop | Dizenin belirtilen kategoride olup olmadığını belirleyin |
sscanf | Biçimlendirilmiş verileri dizeden oku |
strfind | Diğerinin içinde bir dize bulun |
strrep | Alt dizeyi bul ve değiştir |
strsplit | Dizeyi belirtilen sınırlayıcıda böl |
strtok | İpin seçilen kısımları |
onaylayan | Metin dizesinin geçerliliğini kontrol edin |
Symvar | İfadede sembolik değişkenleri belirle |
regexp | Normal ifadeyi eşleştir (büyük / küçük harfe duyarlı) |
regexpi | Normal ifadeyi eşleştir (büyük / küçük harfe duyarlı değildir) |
regexprep | Normal ifade kullanarak dizeyi değiştirin |
regexptranslate | Dizeyi normal ifadeye çevir |
Dize karşılaştırması için işlevler | |
strcmp | Dizeleri karşılaştırın (büyük / küçük harfe duyarlı) |
strcmpi | Dizeleri karşılaştırın (büyük / küçük harfe duyarlı değildir) |
strncmp | Dizelerin ilk n karakterini karşılaştırın (büyük / küçük harfe duyarlı) |
strncmpi | Dizelerin ilk n karakterini karşılaştırın (büyük / küçük harfe duyarlı değildir) |
Dizeyi büyük veya küçük harfe çevirme, boşluk oluşturma veya kaldırma işlevleri | |
deblank | Dizenin sonundaki boşlukları soyun |
strtrim | Dizeden baştaki ve sondaki beyaz boşluğu kaldırın |
aşağı | Dizeyi küçük harfe dönüştür |
üst | Dizeyi büyük harfe dönüştür |
strjust | Karakter dizisini iki yana yasla |
Örnekler
Aşağıdaki örnekler, yukarıda bahsedilen dize işlevlerinden bazılarını göstermektedir -
Dizeleri Biçimlendirme
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
ans = 3141.592654
3141.59
+3141.59
3141.59
000003141.59
Dizelere Katılma
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange
Dizeleri Bulma ve Değiştirme
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
students = {'Zara Ali', 'Neha Bhatnagar', ...
'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma',...
'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
new_student =
{
[1,1] = Poulomi Dutta
}
first_names =
{
[1,1] = Zara
[1,2] = Neha
[1,3] = Monica
[1,4] = Madhu
[1,5] = Madhu
[1,6] = Bhawna
[1,7] = Nuha
[1,8] = Reva
[1,9] = Sunaina
[1,10] = Sofia
}
Dizeleri Karşılaştırma
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal