iyi yolu yazdırmak istiyorum. Eğer sadece çok döngüsüz bir matris/vektör işlemi yapmak istiyorsanız, bu durum neredeyse bir ara ürün olarak s
tersine ve u
arasına benzediğine dikkat edin, ancak bazı terimler aralığa dönüşmüştür. Ben senin denklemler anlamak, bu şuna benzer:
N = 12;
s_all = 1:N;
u_all = 7:N+6
for M = 1:N
s = s_all(1:M);
u = u_all(1:M);
ds = s - [s(2:end) 0];
result = u*ds(end:-1:1)'
end
Not benim veri bir satır vektörüdür.
bu başında N
son boyutunu bilmiyorsanız N
, çok büyük büyümek etmezse çalışıyor ya eğer s
ve u
her tekrarda tüm değişiklik değerleri.
u
ve s
her tekrarda aynı önceki değerlere varsa döngü için yukarıdaki u
ve s
preallocating daha iyi sonuçlar görmek ve daha sonra bir anda yeni değerlere bir getirmek yerine olabilir, verilerinizin boyutlarına bağlı olarak Yeni s
ve u
üzerinden kopyalama ve ds
değerinin tamamını yeniden hesaplanıyor. Bunun gibi
:
s = nan(1,N);
u = nan(1,N);
ds = nan(1,N);
for M = 1:N
s(M) = s_all(M);
u(M) = u_all(M);
if(M>1)
ds(M-1) = s(M-1) - s(M);
end
ds(M) = s(M);
result = u(1:M)*ds(M:-1:1)'
end
Sen döngü içinde her işleminde 'result' üzerine yazıyorsunuz ...? – Dan
Evet, eğer onu korumak istiyorsan, “sonuç (M) = blablabla” – Steve
yazabilirsin, eğer onu korumak istemiyorsan, neden döngü var? Ya da, neden döngüde bu çizgi var? – Dan