Soru sorMatlab iç içe for döngüsü oluşturma
SariLaleler tarafından 5 yıl önce soruldu

Herkese merhaba,
Öncelikle sağıklı günler diliyorum hepimiz için.
 
V1= 5; % It is a fixed that is in the instruction
V2=(-5); %It is a fixed that is in the instruction
vgrid(6:9, 6:12) = V1; %It is my first shape
vgrid(7:9, 6:10) = 0;
vgrid(13:16, 10:16) = V2; %Second shape
vgrid(13:15, 12:16) = 0;
Şu şekilde oluşan değerlerim var. Ve vgrid in satırları x koordinatı, sütunları da y koordinatınındır. Önce iç içe for loop yapmalıyım. Loop lardan birisi x koordinatını diğeri de y koordinatını indeksliyecek şekilde. Bu şekilde vgrid in bütün değerlerine herhangi bir değer atamam gerekiyor. 
Bunu nasıl yaparım acaba yardımcı olursanız çok sevinirim.
 
Teşekkürler

7 Cevap
hakkans Yönetici tarafından 5 yıl önce cevaplandı

Genel olarak iç içe iki for döngüsü ile vgrid in bütün elemanlarını aşağıdaki şekilde gezebilirsiniz:

[xlength,ylength]=size(vgrid)
for ii=1:xlength
   for jj=1:ylength
      vgrid(ii,jj)=5; %bu satir vgrid'in ii'nci satır, jj'nci sütunundaki elemanını 5 yapar.
   end
end

 

SariLaleler tarafından 5 yıl önce cevaplandı

Merhaba,
Öncelikle yanıtınızdan dolayı çok teşekkür ederim
Fakat sistemde şöyle bir hata aldım: Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
Default olarak i ve j imajiner sayılar. Kod içinde tanımlamadığımız için bunları imajier sayı kabul edip fonksiyon cağırdığını zannediyor olabilir. Bunu nasıl düzeltmeliyim peki ?
Yardımcı olursanız tekrardan çok sevinirim.

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

Merhaba,
Hayır karmaşık sayılarla ilgili bir sorun olacağını zannetmiyorum, nitekim tanımladığımız değişkenler ii ve jj değerleri. Budadaki xlength ve ylength değişkenleri matrisin eleman sayısına karşılık geliyor. Yani döngüyü kaç kere döndürmeniz gerektiğini belirtiyor. Bunu gözönünde bulundurdunuz değil mi? Kodunuzu paylaşırsanız sorun daha iyi anlaşılır.

SariLaleler tarafından 5 yıl önce cevaplandı

Merhaba tekrardan,
Yaptığım çalışma bir okul projesi olduğundan dolayı burada paylaşmam mümkün değil malesef. Fakat dilerseniz mail yoluyla sizinle paylaşabilirim. Çok daha iyi olur benim içinde.
Karşılaştığım bu sıkıntıyı okul hocamlada paylaştığımda kendisi bu şekilde bir yanıt döndüler bana. Bu yüzden sizlerede sormak istedim. 
Yardımcı olursanız sevinirim…

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

Merhaba,
Her zaman yardımcı olmak isteriz ancak destek yazışmalarını yalnızca bu sayfa üzerinden gerçekleştirmekteyiz.
Son bir öneri: değişkenlerinizin nokta ve virgüllerini doğru yazdığınızdan emin olmaya çalışın.
Başarılar

SariLaleler tarafından 5 yıl önce cevaplandı

Peki, kodum şu hali aldı son olarak:
V1= 5; % It is a fixed that is in the instruction
V2=(-5); %It is a fixed that is in the instruction
vgrid(6:9, 6:12) = V1; %It is my first shape
vgrid(7:9, 6:10) = 0;
vgrid(13:16, 10:16) = V2; %Second shape
vgrid(13:15, 12:16) = 0;
[ylength,xlength]=size(vgrid);
for jj=1:xlength
for ii=1:ylength
vgrid(jj,ii)=((vgrid(jj,ii-1)+vgrid(jj,ii+1)+vgrid(jj-1,ii)+vgrid(jj+1,ii))/4; % bu kısımda 5 yerine bu formülü yazmam gerekiyor. bu yüzden değişiklik yapmak durumunda kaldım.
end
end
işte bu nokta da yukarıda bahsetmiş olduğum hatayı alıyorum. Hatayı almaktayım hala. Öncesinde ise koordinat üzerinde çizmiş olduğum şeklin kodları bulunmakta. Bu kısım üst kısımlarından bağımsızdır.

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

ii ve jj değerlerinizin 1 olduğunda (vgrid(jj,ii-1) ve vgrid(jj-1,ii) ifadelerinde 0 geliyor. Bir matrisin sıfırıncı elementi diye bir şey olmaz. Bunu gözönünde bulundurarak ii ve jj değerlerinizin başlangıç değerlerini tekrar gözden geçirin.