[]

Matlab günlerin yağış ortalamasını alma

Dostlar,

MATLAB da yeniyim. Soracağım soruyu VBA gibi bir dilde yazıp yapabilirim ama artık Matlab ın engin dünyasına gireyim istiyorum. Sorum şu, yol gösterseniz yetwr(şu fonksiyonları kullanacaktır vs)

Elimde bir excel Dosyası var:

1960 1 1 18 12
1960 1 2 12 16
1960 1 3 5 15
.
.
1990 12 30 0 5

Yıl ay gün yağış sıcaklık

En son şunu bulacağım, her günün ortalaması.

Yani 1 ocağın ortalaması şöyle bulunacak: 1 ocak 1960+ 1 ocak 1961.. 1990

Bunu 360 gün için yapmam gerekli,

Nasıl yaparım? Şimdiden teşekkürler.

 
Diyelim ki bunları data diye bir değişkene kopyalama-yapıştırma ile atadın.
Bir fonksiyon olarak şunu yazabilirsin.

yil_listesi=unique(data(:,1));
yil_sayisi=size(yil_listesi,1);
%Bu komut yılları listeler ve kaç yıl olduğuna bakar, eğer arada atlama yapmıyorsa buna gerek yok.
ortalamalar=zeros(yil_sayisi,1);

for i=1:yil_sayisi
yil=yil_listesi(i);
suzulmus_liste=yil_listesi(yil_listesi(1,:)==yil,:);
ortalamalar(i)=mean(suzulmus_liste(:,5));
end

Fonksiyonun çıktısı ortalamalar olur.

Editleyip komutları tek tek açacağım.

Edit:

yil_listesi=unique(data(:,1));
data değişkeninin 1. sütununu komple alır. (: işareti MATLAB'de tüm anlamına gelir) data(:,1) ile data değişkeninin 1. sütununu elde ederiz. unique komutu ise tekrarsız olarak o sütunda verilen dataların listelenmesini sağlar. Sonuç olarak yıl listesi şöyle bir vektördür.
yil_listesi =
1960
1961
1962
.
.
.
1990

yil_sayisi=size(yil_listesi,1);
size komutu matrislerin boyutunu verir. 1 dersek satır sayısı, 2 dersek sütun sayısı olur. Burada 1 dediğimiz için yil_listesi değişkenindeki satırları sayarak kaç tane yıla ait verimiz olduğuna bakıyoruz. Böylece arada atlama yapan yıllar varsa, bunları görebiliyoruz.

ortalamalar=zeros(yil_sayisi,1);
Bu komutla ortalamalar değişkenini oluşturuyoruz (initialization). "yil_sayisi kadar satırı ve bir sütunu olan bir sütun vektörüdür" diyoruz.

for i=1:yil_sayisi
end
Tüm yıllar için ayrı ayrı ortalama hesaplayacağım.

yil=yil_listesi(i);
i. sıradaki yıl hangisiyse listeden o yılı çekiyorum.

suzulmus_liste=data(data(:,1)==yil,:);
Bunu parçalara böleyim.
data(:,1)==yil
Bu bir sorgu (== kullanımından bunu anlıyoruz). "Eğer yil_listesi'nin tüm satırlarında birinci sütunun değeri ilgili yıla eşitse" diyor

data(data(:,1)==yil,:);
Yukarıdaki eşitse sorgusundan sonra eşit olan tüm satırları aldırıyoruz. : bu sefer sütunlar için kullanılıyor. Ve onu suzulmus_liste diye bir değişkene atıyoruz. BÖylelikle sadece o yılın verileri kalmış oluyor datadan.

ortalamalar(i)=mean(suzulmus_liste(:,5));
Süzülmüş listenin 5. sütununun ortalamasını alıp, i. yılın ortalaması olarak yazdırıyoruz.
  • aychovsky  (24.06.14 22:15:36 ~ 22:25:51) 
Çok Teşekkürler hocam, üzerind düşünüp deneyeceğim.


  • hiperaktifmanyetik  (24.06.14 22:22:06) 
Hocam, nasıl teşekkür etsem az. Eyvallah, açıklamasıyla da mükemmel oldu. :)


  • hiperaktifmanyetik  (24.06.14 22:33:41) 
Xlsread komutunu araştır. Doğrudan Excelden matlaba veri çekersin öğrenmekte fayda var. Aynı şekilde xlswrite komutunu da öğren.


  • godsparticle  (24.06.14 22:41:31) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.