Merhaba,
for k=1:5 for i=1:6 A(i,:)=Cust(i,:).*D(k,:) end end
D Matrisinin 1. Satırı; Cust Matrisinin her bir satırıyla tek tek çarpılarak 6 satırlık bir matris oluşturulsun. Daha sonra aynı işlem;
D Matrisinin 2. Satırı; Cust Matrisinin her bir satırıyla tek tek çarpılarak 6 satırlık bir matris oluşturulsun istiyorum.
Yukarıda yazdığım for döngüsü bana sadece 1 tane matris veriyor. Benim sonuçta elde etmek istediğim;
6'şar satırlık, toplam 5 matris. Nasıl yapabilirim?
Saygılarımla…
Bu şu demek oluyor, D matrisinin satır numarasını her seferinde 1 arttıracaksınız. Aşağıdaki örnek kodu inceleyebilirsiniz.
for kk=1:5
for k=1:5
for i=1:6
A(i,:)=Cust(i,:).*D(k,kk)
end
end
end
Tam olarak istediğimi elde edemedim.
D =
1 1 0 1 1 %A1'i elde etmek için kullanılacak satır.
0 0 1 0 1 %A2'i elde etmek için kullanılacak satır.
1 1 1 1 0 %A3'i elde etmek için kullanılacak satır.
0 0 0 1 0 %A4'i elde etmek için kullanılacak satır.
1 1 0 0 0 %A5'i elde etmek için kullanılacak satır.
Cust =
2 3 6 7 1
0 5 8 4 12
11 6 14 5 8
19 18 21 16 13
3 9 8 7 10
4 7 9 6 0
Yapmak istediğim;
A1= D'nin ilk satırı X(çarpı) tek tek Cust'ın tüm satırları
1 1 0 1 1 .* 2 3 6 7 1
1 1 0 1 1 .* 0 5 8 4 12
1 1 0 1 1 .* 11 6 14 5 8
1 1 0 1 1 .* 19 18 21 16 13
1 1 0 1 1 .* 3 9 8 7 10
1 1 0 1 1 .* 4 7 9 6 0
A1= 2 3 0 7 1
0 5 0 4 12
11 6 0 5 8
19 18 0 16 13
3 9 0 7 10
4 7 0 6 0
A2=
0 0 1 0 1 .* 2 3 6 7 1
0 0 1 0 1 .* 0 5 8 4 12
0 0 1 0 1 .* 11 6 14 5 8
0 0 1 0 1 .* 19 18 21 16 13
0 0 1 0 1 .* 3 9 8 7 10
0 0 1 0 1 .* 4 7 9 6 0
A2= 0 0 6 0 1
0 0 8 0 12
0 0 14 0 8
0 0 21 0 13
0 0 8 0 10
0 0 9 0 0
Benzer şekilde A3,A4 ve A5'i hesaplasın istiyorum.
Saygılarımla…
Merhaba,
Aşağıdaki örneği inceleyebilirsiniz,
%Rastgele Ornek D ve Cust matrislerini uretelim D = randi([1 10],6,6) Cust = randi([1 10],6,6) for i =1:6; %D'nin satirlarini degistirecek for s = 1:6; %Cust satirlarini degistirecek A(s,:,i)=D(i,:).*Cust(s,:); %Carpmayi yaparak sonuclari A'da depolayacak end end
Çok fazla meşgul ettiğim için özür dileyerek;
A(s,:,i)=D(i,:).*Cust(s,:); satırı için hata veriyor.
Ne hatası alıyorsunuz? Ben yukarıdaki örneği 6ya6lık matrisler için verdim. Eğer sizin matrisleriniz (A ve Cust) 6ya6lık değil ise i ve s değerlerini ona göre değiştirmelisiniz.
Lütfen sormaktan çekinmeyin.
Boyut uyuşmazlığı hatası veriyor. Ben önce sizin yazdığınız kodu çalıştırdım. Daha sonra kendi i ve s değerlerimi ekleyecektim. Sonuç şu şekilde;
>> sdsf
D =
7 2 4 3 3 1
4 5 4 3 8 2
3 4 2 5 1 2
6 5 3 2 4 3
9 9 1 5 1 2
5 5 5 8 3 2
Cust =
6 6 10 8 4 10
10 3 5 7 9 10
10 1 10 6 9 6
3 5 8 3 5 4
5 2 1 8 4 9
4 1 7 3 7 5
Subscripted assignment dimension mismatch.
Error in sdsf (line 7)
A(s,:,i)=D(i,:).*Cust(s,:); %Carpmayi yaparak sonuclari A'da
depolayacak
Bir yerlerde yanlışlık yaptığınızı düşünüyorum. Kod aşağıdaki gibi hata vermeden çalışmaktadır.
%D ve Cust matrislerini uretelim D = [7 2 4 3 3 1; 4 5 4 3 8 2; 3 4 2 5 1 2; 6 5 3 2 4 3; 9 9 1 5 1 2; 5 5 5 8 3 2]; Cust = [6 6 10 8 4 10; 10 3 5 7 9 10; 10 1 10 6 9 6; 3 5 8 3 5 4; 5 2 1 8 4 9; 4 1 7 3 7 5]; for i =1:6; %D'nin satirlarini degistirecek for s = 1:6; %Cust satirlarini degistirecek A(s,:,i)=D(i,:).*Cust(s,:); %Carpmayi yaparak sonuclari A'da depolayacak end end
A Matrisinin çıktısı da aşağıdaki gibidir:
val(:,:,1) =
42 12 40 24 12 10
70 6 20 21 27 10
70 2 40 18 27 6
21 10 32 9 15 4
35 4 4 24 12 9
28 2 28 9 21 5
val(:,:,2) =
24 30 40 24 32 20
40 15 20 21 72 20
40 5 40 18 72 12
12 25 32 9 40 8
20 10 4 24 32 18
16 5 28 9 56 10
val(:,:,3) =
18 24 20 40 4 20
30 12 10 35 9 20
30 4 20 30 9 12
9 20 16 15 5 8
15 8 2 40 4 18
12 4 14 15 7 10
val(:,:,4) =
36 30 30 16 16 30
60 15 15 14 36 30
60 5 30 12 36 18
18 25 24 6 20 12
30 10 3 16 16 27
24 5 21 6 28 15
val(:,:,5) =
54 54 10 40 4 20
90 27 5 35 9 20
90 9 10 30 9 12
27 45 8 15 5 8
45 18 1 40 4 18
36 9 7 15 7 10
val(:,:,6) =
30 30 50 64 12 20
50 15 25 56 27 20
50 5 50 48 27 12
15 25 40 24 15 8
25 10 5 64 12 18
20 5 35 24 21 10
Evet bu haliyle çalıştı ve istediğim sonucu alabildim. Çok teşekkür ederim.
Saygılarımla