Soru sorherhangi iki matrisi for döngüleriyle çarpan program
kaantrk145 tarafından 6 yıl önce soruldu

Programı kendim yazdım ancak benim belirlediğim matrisler çarpılıyor ben kullanıcının istediği matrisi yazabilmesini istiyorum ama yapamıyorum.
program:

k=1;
for i=1:1:3
for j=1:1:3
z(i,j)=k; %birinci matris
k=k+1;
end
end
k=1;
for i=1:1:3
for j=1:1:3
g(i,j)=k; %ikinci matris
k=k+1;
end

end
z.*g
14 Cevap
sayginer Yönetici tarafından 6 yıl önce cevaplandı

Yani ekrandan girilecek bir matris ile işlemlerinizi yapmak istiyorsunuz?

Daha önce sorulan aşağıdaki soruları inceleyebilirsiniz:

kaantrk145 tarafından 6 yıl önce cevaplandı

Attığınız linklerde istediklerimi bulamadım. Benim yapmak istediğim for döngüleriyle iki matrisi çarpacak kodu yazıp, kullanıcının mxn boyutunda iki matrisi girmesini sağlamak.

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Yapmaya çalıştığınız konuda takıldığınız yer nedir? for döngüsünü kullanma amacınız nedir? Benim yukarıda paylaştığım bağlantılarda bahsettiğiniz mxn boyutundaki matrisin nasıl girilebileceğini göstermekte.

kaantrk145 tarafından 6 yıl önce cevaplandı

for döngüsüyle yapmak istiyorum çünkü ödevim o :(. Diğer türlü bende yaptım ancak forla yapamadım vizenin %20 sini kapsayacakmış. Matris göstermeden gidin kendiniz öğrenin dedi bugün 6. günüm araştırıyorum yabancı sitelere de baktım ancak forla yapan yok öğreten yok bende burayı buldum yardımcı olabilirseniz çok mutlu olurum.

sayginer Yönetici tarafından 6 yıl önce cevaplandı
kaantrk145 tarafından 6 yıl önce cevaplandı

Yolladığınız linke baktım row sıralıyor ama onun ne anlama geldiğini bilmiyorum :D iş gittikçe karmaşık hal alıyor. O kodları yazdığım zaman row=1 den 700'e kadar sonuç veriyor otomatikmen. Matris girmemi falan istemiyor. Hiç bir giriş yaptırtmadan sonuç veriyor ve verdiği sonuç da row zaten matris çarpımı değil. Size şöyle diyim ben matlab hakkında temel bilgilere sahibim disp, if, for, input vb. oyüzden belki de o kodu bulsam bile anlayamıyorum. Sizden de ödevi yapmanızı isteyemem orası aşikar ancak biraz yardım edebilirseniz çok mutlu olurum.

hakkans Yönetici tarafından 6 yıl önce cevaplandı

Matris elemanlarını mı tek tek almak istiyorsunuz? O zaman şu şekilde bir satır koyabilirsiniz for döngülerinin en içine

z(i,j)=input('Matris elemanı giriniz.')

Ama for döngüsü kullanma amacınızın matris çarpımını for döngüsü ile yapmak olduğunu anladım ben. Bunun için matris çarpımı üzerine eğilmemiz gerekiyor. Herhangi iki matrisin çarpılabilmesi için ilkinin satır sayısı ile ikincisinin sütun sayısının eşit olması gerekir. Yani mxn ve nxp boyutlu matrisler çarpılabilir. Çarpımı yaparken de, birinci matrisi alıp, satır satır elemanlarını gezerken, diğer matrisin de sütunlarını alıp, elemanları gezmeniz gerekiyor. Sonuçta mxp boyutunda bir matris elde edeceğiz.
z->mxn matris, g->nxp matris olsun

for i=1:m
   for j=1:p
     res(i,j)=z(i,:)*g(:,j)
   end
end

Bu kodda satır ve sütunları bir bütün olarak aldık, (:) işareti o satır/sütundaki tüm elemanları almak demek. Eğer elemanları teker teker birbiriyle çarpmak istiyorsanız daha fazla for döngüsü gerekecek ki bu mantıkla gerisini de yapabileceğinize inanıyorum.

kaantrk145 tarafından 6 yıl önce cevaplandı

matris elemanı giriniz kısmına ne girersem gireyim hata veriyor nasıl değerler yazmam gerekiyor mantıksal değer girin falan diyo

hakkans Yönetici tarafından 6 yıl önce cevaplandı

Matris elemanı giriniz kısmında yazdığım kod gereği elemanları tek tek girmeniz gerekiyor. Ayrıca, i ve j nin tanımlı olması gerekiyor, logical value hatasını sadece i ve j tanımlı olmadığında aldım. Döngülerin içinde yapmanız gerekiyor bu işlemi.

kaantrk145 tarafından 6 yıl önce cevaplandı

elemanları tek tek giriyorum mesela direkt 3 yazıyorum ama yine aynı hatayı alıyorum tam olarak anlamadım nasıl gireceğimi elemanları [1 2 3;4 5 6], [1 2 3], 3, [3] şeklinde falan hepsini denedim ama olmadı

hakkans Yönetici tarafından 6 yıl önce cevaplandı

İşlemi döngü içinde yapıyor musunuz? İlk yazdığınız kodda aşağıdaki satırın yerine koymanız gerekiyor.

z(i,j)=k; %birinci matris
kaantrk145 tarafından 6 yıl önce cevaplandı

dediğinizi anlayamadım neyi nereye koyacağım benim kodum üzerinde düzelterek nerde hata yapmışım gösterbilirmisiniz ?

hakkans Yönetici tarafından 6 yıl önce cevaplandı
k=1;
for i=1:1:3
for j=1:1:3
z(i,j)=input('Matris elemanı giriniz.')
end
end
kaantrk145 tarafından 6 yıl önce cevaplandı

çok teşekkür ederim istediğime ulaştım sayenizde :) yorduğum için kusuruma bakmayın. İyi günler.