MATLAB - Diziler
MATLAB'daki tüm veri türlerinin tüm değişkenleri çok boyutlu dizilerdir. Bir vektör, tek boyutlu bir dizidir ve bir matris, iki boyutlu bir dizidir.
Vektörleri ve matrisleri zaten tartışmıştık. Bu bölümde, çok boyutlu dizileri tartışacağız. Bununla birlikte, bundan önce, bazı özel dizi türlerini tartışalım.
MATLAB'da Özel Diziler
Bu bölümde, bazı özel dizileri oluşturan bazı işlevleri tartışacağız. Tüm bu işlevler için, tek bir argüman kare bir dizi oluşturur, çift argümanlar dikdörtgen dizi oluşturur.
zeros() işlev tamamen sıfırlardan oluşan bir dizi oluşturur -
Örneğin -
zeros(5)
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
ones() fonksiyon tüm olanlardan oluşan bir dizi oluşturur -
Örneğin -
ones(4,3)
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
ans =
1 1 1
1 1 1
1 1 1
1 1 1
eye() işlevi bir kimlik matrisi oluşturur.
Örneğin -
eye(4)
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
rand() fonksiyon, (0,1) üzerinde düzgün dağıtılmış rasgele sayılardan oluşan bir dizi oluşturur -
Örneğin -
rand(3, 5)
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
ans =
0.8147 0.9134 0.2785 0.9649 0.9572
0.9058 0.6324 0.5469 0.1576 0.4854
0.1270 0.0975 0.9575 0.9706 0.8003
Sihirli Kare
Bir magic square öğeleri satır, sütun veya çapraz olarak eklendiğinde aynı toplamı üreten bir karedir.
magic()işlevi sihirli bir kare dizisi oluşturur. Karenin boyutunu veren tekil bir argüman alır. Bağımsız değişken, 3'e eşit veya daha büyük bir skaler olmalıdır.
magic(4)
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Çok Boyutlu Diziler
MATLAB'da ikiden fazla boyuta sahip bir dizi çok boyutlu dizi olarak adlandırılır. MATLAB'deki çok boyutlu diziler normal iki boyutlu matrisin bir uzantısıdır.
Genellikle çok boyutlu bir dizi oluşturmak için önce iki boyutlu bir dizi oluşturup genişletiyoruz.
Örneğin, iki boyutlu bir dizi oluşturalım a.
a = [7 9 5; 6 1 9; 4 3 2]
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
a =
7 9 5
6 1 9
4 3 2
Dizi , bir 3-ile-3 dizidir; Biz üçüncü bir boyut ekleyebilirsiniz bir benzeri değerler sağlayarak, -
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
a =
ans(:,:,1) =
0 0 0
0 0 0
0 0 0
ans(:,:,2) =
1 2 3
4 5 6
7 8 9
Ayrıca ones (), sıfırlar () veya rand () işlevlerini kullanarak çok boyutlu diziler oluşturabiliriz.
Örneğin,
b = rand(4,3,2)
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
b(:,:,1) =
0.0344 0.7952 0.6463
0.4387 0.1869 0.7094
0.3816 0.4898 0.7547
0.7655 0.4456 0.2760
b(:,:,2) =
0.6797 0.4984 0.2238
0.6551 0.9597 0.7513
0.1626 0.3404 0.2551
0.1190 0.5853 0.5060
Ayrıca kullanabiliriz cat()çok boyutlu diziler oluşturma işlevi. Belirli bir boyut boyunca dizilerin bir listesini birleştirir -
Cat () işlevinin sözdizimi -
B = cat(dim, A1, A2...)
Nerede,
B oluşturulan yeni dizidir
A1 , A2 , ... birleştirilecek dizilerdir
dim , dizilerin birleştirileceği boyuttur
Misal
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])
Dosyayı çalıştırdığınızda, -
c(:,:,1) =
9 8 7
6 5 4
3 2 1
c(:,:,2) =
1 2 3
4 5 6
7 8 9
c(:,:,3) =
2 3 1
4 7 8
3 9 0
Dizi İşlevleri
MATLAB, dizi içeriklerini sıralamak, döndürmek, izin vermek, yeniden şekillendirmek veya değiştirmek için aşağıdaki işlevleri sağlar.
Fonksiyon | Amaç |
---|---|
uzunluk | Vektör uzunluğu veya en büyük dizi boyutu |
ndims | Dizi boyutlarının sayısı |
numel | Dizi elemanlarının sayısı |
boyut | Dizi boyutları |
iscolumn | Girdinin sütun vektörü olup olmadığını belirler |
boş | Dizinin boş olup olmadığını belirler |
ismatrix | Girdinin matris olup olmadığını belirler |
Isrow | Girdinin satır vektörü olup olmadığını belirler |
isscalar | Girdinin skaler olup olmadığını belirler |
vektör | Girdinin vektör olup olmadığını belirler |
blkdiag | Giriş argümanlarından blok diyagonal matrisi oluşturur |
daire değiştirme | Diziyi dairesel olarak kaydırır |
ctranspose | Karmaşık eşlenik devrik |
tanılama | Çapraz matrisler ve matrisin köşegenleri |
Flipdim | Diziyi belirtilen boyut boyunca çevirir |
Fliplr | Matrisi soldan sağa çevirir |
takla | Matrisi yukarı aşağı çevirir |
ipermute | Tersler, ND dizisinin boyutlarını değiştirir |
permütasyon | ND dizisinin boyutlarını yeniden düzenler |
repmat | Kopyalar ve döşeme dizisi |
yeniden şekillendirmek | Diziyi yeniden şekillendirir |
rot90 | Matrisi 90 derece döndürür |
Shiftdim | Boyutları değiştirir |
sıralı | Set öğelerinin sıralı olup olmadığını belirler |
çeşit | Dizi öğelerini artan veya azalan sırada sıralar |
Sıralamalar | Satırları artan sırada sıralar |
suyunu sıkmak | Tekli boyutları kaldırır |
değiştirmek | Transpoze |
vektörleştirmek | Vectorizes ifadesi |
Örnekler
Aşağıdaki örnekler, yukarıda bahsedilen işlevlerden bazılarını göstermektedir.
Length, Dimension and Number of elements −
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x) % length of x vector
y = rand(3, 4, 5, 2);
ndims(y) % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s) % no of elements in s
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
ans = 8
ans = 4
ans = 23
Circular Shifting of the Array Elements −
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
a = [1 2 3; 4 5 6; 7 8 9] % the original array a
b = circshift(a,1) % circular shift first dimension values down by 1.
c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1
% and second dimension values to the left % by 1.
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
a =
1 2 3
4 5 6
7 8 9
b =
7 8 9
1 2 3
4 5 6
c =
8 9 7
2 3 1
5 6 4
Dizileri Sıralama
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
v = [ 23 45 12 9 5 0 19 17] % horizontal vector
sort(v) % sorting v
m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array
sort(m, 1) % sorting m along the row
sort(m, 2) % sorting m along the column
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
v =
23 45 12 9 5 0 19 17
ans =
0 5 9 12 17 19 23 45
m =
2 6 4
5 3 9
2 0 1
ans =
2 0 1
2 3 4
5 6 9
ans =
2 4 6
3 5 9
0 1 2
Hücre Dizisi
Hücre dizileri, her hücrenin farklı boyut ve veri türlerinden oluşan bir diziyi depolayabildiği dizinlenmiş hücre dizileridir.
cellişlevi, bir hücre dizisi oluşturmak için kullanılır. Hücre işlevinin sözdizimi -
C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)
Nerede,
C hücre dizisidir;
dim , C hücre dizisinin boyutlarını belirten skaler bir tamsayı veya tamsayı vektörüdür;
dim1, ..., dimN , C'nin boyutlarını belirten skaler tam sayılardır;
obj aşağıdakilerden biridir -
- Java dizisi veya nesnesi
- System.String veya System.Object türünde .NET dizisi
Misal
Bir komut dosyası oluşturun ve aşağıdaki kodu içine yazın -
c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Dosyayı çalıştırdığınızda, aşağıdaki sonucu görüntüler -
c =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
[1,3] = Green
[2,3] = 3
[1,4] = Yellow
[2,4] = 4
[1,5] = White
[2,5] = 5
}
Hücre Dizilerindeki Verilere Erişim
Bir hücre dizisinin öğelerine başvurmanın iki yolu vardır -
- Hücre kümelerine başvurmak için indisleri ilk parantez () içine alma
- Tek tek hücrelerdeki verilere başvurmak için dizinleri kaşlı ayraçlar {} içine alma
Dizinleri ilk köşeli parantez içine aldığınızda, hücre kümesine başvurur.
Düz parantez içindeki hücre dizisi indeksleri, hücre kümelerini ifade eder.
Örneğin -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
ans =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
}
Küme ayraçları ile dizin oluşturarak da hücrelerin içeriğine erişebilirsiniz.
Örneğin -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
MATLAB yukarıdaki ifadeyi çalıştıracak ve aşağıdaki sonucu döndürecektir -
ans = Blue
ans = Green
ans = Yellow