Soru sorBir vektörün maksimum değeri ve index'i
vilehandrad tarafından 5 yıl önce soruldu

Merhaba, kodumdaki mantığımı bir eleman bir sonraki elemandan küçük olmaya devam ettikçe, ilk elemanı silmeye odaklı oluşturdum. Fakat bu şekilde olduğunda a(i+1) elemanı, girilen vektörde bulunamayacağı için hata veriyor. Bunu düzeltmeye yönelik ya da direkt bambaşka bir mantık tavsiyeniz var mı? 
function Sonuc=maks(a)

for i=1:length(a)

if a(i)<a(i+1)

a(i)=a(i+1);
i=i+1;

elseif a(i)>a(i+1)

a(i)=a(i+1);
b=a(i);
i=i+1;

end

end
fprintf('Max değer ve index: (%g,%g) \n', a(i),i)

end
 

3 Cevap
Caglar Yönetici tarafından 5 yıl önce cevaplandı

iyi aksamlar, kendi max() fonksiyonunuzu mu yazmaya calısıyorsunuz?

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

iyi akşamlar, evet max fonksiyonunu manuel olarak kendim denemek istedim

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

Öncelikle kodda bazı mantık hataları var:
i=i+1; demişsiniz. bunun bir anlamı yok. for dongusu zaten i değerini kendi değiştiriyor,
a(i) küçükse de büyükse de  a(i)=a(i+1); yazmışsınız,
b=a(i); yazmışsınız ama b değişkeni hiç bir yerde kullanılmamış.
ek olarak,
"bir eleman bir sonraki elemandan kucuk olmaya devam ettikce, sil" mantıgı tam olarak max()'ı taklit etmeyecektir.
[3 5 7 5 7] vektorunu [7 7] yapacaktır.  [3 5 4] vektorunu [5 4 ] yapacaktır. 
sizin mantıgınıza en yakın calısabilir algoritma "elemanları karsilastir, buyuk olan degeri tut" olabilir.