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
Yani ekrandan girilecek bir matris ile işlemlerinizi yapmak istiyorsunuz?
Daha önce sorulan aşağıdaki soruları inceleyebilirsiniz:
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.
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.
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.
Aşağıdaki bağlantıda sorunuzun benzeri bulunmaktadır:
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.
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.
matris elemanı giriniz kısmına ne girersem gireyim hata veriyor nasıl değerler yazmam gerekiyor mantıksal değer girin falan diyo
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.
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ı
İş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
dediğinizi anlayamadım neyi nereye koyacağım benim kodum üzerinde düzelterek nerde hata yapmışım gösterbilirmisiniz ?
k=1; for i=1:1:3 for j=1:1:3
z(i,j)=input('Matris elemanı giriniz.')
end
end
çok teşekkür ederim istediğime ulaştım sayenizde :) yorduğum için kusuruma bakmayın. İyi günler.