0
Octave'a küçük bir kod yazdım ve bunun bir parçası, iki matrisin ilk satırlarındaki değerlerin eşit olup olmadığını kontrol ediyor ve eğer öyleyse, ikinci matrisin ikinci satırının değerini ikinci satırın değerine ekliyor ilk matrisin Bu sonuç verirSüredöngüsünü değiştirerek yürütme süresini kısaltabilir miyim?
PositionLoadArray =
1 5 3 7 4 6 9 2 1 2
1 2 3 4 5 6 7 8 9 10
X =
0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0
x=1; #row number in matrix X
y=1; #row number in matrix PositionLoadArray
while y<=columns(PositionLoadArray)
if PositionLoadArray(1,y)==X(1,x)
X(2,x)=X(2,x)+PositionLoadArray(,y);
y=y+1;
x=1;
else
x=x+1;
endif
endwhile
:
X =
0 1 2 3 4 5 6 7 8 9
0 10 18 3 5 2 6 4 0 7
döngü çalışır ve küçük için mükemmel çalışıyor
Bu
küçük bir veri kümesi kullanılarak, ben yazdım o kod parçasıdır Yukarıdaki gibi ayarlar (yani, X ve PositionLoadArray için toplam sütun sayısı (sırasıyla x ve y'nin maksimum değerleri) küçüktür). Ancak döngü daha büyük değerler ile yürütülecek saatler alır.Yürütme süresini nasıl azaltabilirim ve aynı sonucu nasıl alabilirim?
@Matt deneyin. Bununla birlikte, yukarıdaki yukarıdaki kod kesinlikle MATLAB değil, Octave dilinde yazılmıştır. Sütunlar işlevi yalnızca bir matriste toplam sütun sayısını döndüren Octave'da kullanılabilir. MATLAB etiketini kaldırdım. – rayryeng
@rcpinto Bu, kodumun 'PositionLoadArray (1, herhangi bir (y)) == X (1, x)' ise ') ile aynı sonucu verir. Soruyu okuduğunda yaptı. Sanırım sorumu düzenleyen kişi o bölümü ekledi. Sorunu şimdi soruya nasıl çözeceğinizi biliyor musunuz? –
@rayryeng Güzel yakalama. Bu açıkça Octave, OP buna göre soruyu düzenledi. – Matt