MATLAB’ de Programlama VIII (Dizilerle ilgili örnekler) Hafta 8 Matlab Ders Notları
Matrislerde Tranzpoz İşlemi Transpoz, matrislerde satır ile sütunun yer değiştirilmesi işlemidir. Yani A=3x2’lik birmatrisin transpozu alındığı zaman B=AT=2x3’lük bir matris elde edilir. A = 1 3 0 4 2 -3 A=[1 3 0; 4 2 -3]; for i=1:2 for j=1:3 B(j,i)=A(i,j); end B B =AT 1 4 3 2 0 -3 Hafta 8 Matlab Ders Notları
Örnek 1 Beş işçinin 1 ay boyunca çalışma cetveli verilmiştir. Ücret değerleri Milyon TL göstermektedir. İŞÇİLER 1 2 3 4 5 Saat Ücreti 1.2 2.5 4.5 Çalışılan saat 153 160 157 165 150 Ürün Adeti 1100 1250 1000 1200 a) Her bir işçi bir ayda ne kadar para kazanmıştır? b) İşverenin bu aya ait toplam maaş ödemesi kaç liradır? c) Ne kadar ürün üretilmiştir? NOT: Saat ücretleri, çalışılan saat ve ürün adeti bir dizi olarak oluşturulacak. Hafta 8 Matlab Ders Notları
Çözüm 1 saatucret = [ 1200000 2000000 2500000 3000000 4500000]; csaat = [ 153 160 157 165 150 ]; urun = [ 1100 1250 1000 1200 1100 ]; uruntoplam = 0; odenenmaas = 0; for i=1:5 maas(i) = saatucret(i) * csaat(i); uruntoplam = uruntoplam + urun(i); odenenmaas = odenenmaas + maas(i); fprintf ('%d. işçinin maaşı=', i); disp(maas(i)) end uruntoplam odenenmaas Hafta 8 Matlab Ders Notları
Örnek 2: 5 öğrencinin 1 dersten aldıkları vize ve final notlarını alarak herbir öğrencinin ortalamalarını hesaplayan ve aşağıdaki formata göre yazdıran programı yazınız. Sıra Vize Final Ortalama 1. Öğrenci 35 40 37.5 2. Öğrenci 22 95 58.5 : : : : Hafta 8 Matlab Ders Notları
Çözüm 2: for i=1:5 fprintf('%d. öğrencinin vize notu=', i); vize(i)=input(' '); fprintf('%d. öğrencinin final notu=', i); final(i)=input(' '); ort(i)=(vize(i)+final(i))/2; end fprintf( 'sıra vize final ortalama\n'); fprintf('==== ==== ===== ========\n'); fprintf('%d. Öğrenci %g %g %f\n', i, vize(i), final(i),ort(i)); Hafta 8 Matlab Ders Notları
Örnek 3: 3x2 boyutunda bir B matrisinin elemanları okutularak bu matrisin sıfırdan küçük elemanlarını tek boyutlu bir y dizisine aktaran programı yazınız. k=1; for i=1:3 for j=1:2 fprintf( ’B(%d,%d)=’ ,i , j) B(i,j)=input(' '); if B(i,j) < 0 y(k)=B(i,j); k=k+1; end y İki boyutlu dizinin elemanlarının girişi (okutulması) Hafta 8 Matlab Ders Notları
Örnek 4: 2x3 boyutunda bir A (A=[-4 0 9 ; 16 -9 4]) matrisinin elemanları program içerisinde girilerek bu matrisdeki sayıların ortalamasını ve pozitif sayıların karekökleri toplamını bulan programı yazınız. A=[-4 0 9 ; 16 -9 4]; koktoplam=0; toplam=0; for i=1:2 for j=1:3 toplam=toplam+A(i,j); if A(i,j) > 0 koktoplam=koktoplam+sqrt(A(i,j)); end ortalama = toplam / (i*j) koktoplam Hafta 8 Matlab Ders Notları
Örnek 5: B=[-45 0 5 10 -91 2]; k=6; for i=1:6 C(k)=B(i); k=k-1; end C B=[-45 0 5 10 -91 2] dizisinin elemanlarını tersten yazdırarak başka bir diziye aktaran programı yazınız. B=[-45 0 5 10 -91 2]; k=6; for i=1:6 C(k)=B(i); k=k-1; end C Hafta 8 Matlab Ders Notları
Örnek 6: K=[-4 3 0 ; 2 0 4 ]; adet=0; for i=1:2 for j=1:3 if K(i,j)==0 K=[-4 3 0 ; 2 0 4 ] matrisindeki sıfırların sayısını ve yerini (satır ve sütun numaralarını) veren programı yazınız. K=[-4 3 0 ; 2 0 4 ]; adet=0; for i=1:2 for j=1:3 if K(i,j)==0 adet=adet+1; i,j end adet Hafta 8 Matlab Ders Notları
Ödev: A=[0 -2 8 9 16 7] dizisi veriliyor. Bu dizinin en küçük ve en büyük elemanlarını bulan programı yazınız. Not: A dizisinin en büyük ve en küçük elemanları iki ayrı FOR döngüsü içinde bulunacaktır. Hafta 8 Matlab Ders Notları