folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Matlab Kodunu Javaya Dönüştürmek İçin Yardım



Matlab Kodunu Javaya Dönüştürmek İçin Yardım

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fortunate1357
    fortunate1357's avatar
    Kayıt Tarihi: 17/Mayıs/2007
    Erkek

    Merhaba arkadaşlar. Bir arkadaşımın bitirme tezini yapmasına yardımcı oluyorum da hiç matlab bilmediğim için matlab kodunu anlayıp javaya dönüştürmem zor oluyor. Aşağıdaki kodu anlayıp yanına açıklama yazabilecek birileri var mı acaba? (Örneğin burada transpoze aldık. Burada iki matrisi çarpıp başka bir matrise attık gibi). Şimdiden teşekkürler.

     

    %%%%parametreler%%%%%

    mu1=0.2;

    mu2=0.2;

    a=3;

    %%%%%%%%%%%

    ng=9;

    nn1=4;

    nn2=3;

    nn0=2;

    iterasyon_s=100;

    egitim_s=4;

    %%%%ilk degerler%%%

    agirlik_1=0.25*randn(nn1,ng+1);

    agirlik_2=0.25*randn(nn2,nn1+1);

    agirlik_o=0.25*randn(nn0,nn2+1);

    %%%%%%%%%%%%%%%%%%%%%%%

    egitim_kumesi_g=[0.9 0.9 0.9 0.1 0.9 0.1 0.1 0.9 0.1;

    0.9 0.1 0.1 0.9 0.1 0.1 0.9 0.9 0.9;

    0.9 0.9 0.1 0.1 0.9 0.1 0.1 0.9 0.1;

    0.9 0.1 0.1 0.9 0.1 0.1 0.9 0.9 0.1];

    egitim_kumesi_c=[1 0;

    0 1;

    1 0;

    0 1];

    for l=1:iterasyon_s

    for k=1:egitim_s

    giris_1=[egitim_kumesi_g(k,:)';1];

    cikis=egitim_kumesi_c(k,:)';

    v1=agirlik_1*giris_1;

    y1=1./(1+exp((-1)*a*v1));

    giris_2=[y1;1];

    v2=agirlik_2*giris_2;

    y2=1./(1+exp((-1)*a*v2));

    giris_o=[y2;1];

    vo=agirlik_o*giris_o;

    yo=1./(1+exp((-1)*a*vo));

    e=cikis-yo;

    hata=0.5*e'*e;

    hata_kon(k,1)=hata(:);

    %fdrv_o=a*yo.*(1-yo);

    %%%egitim cikis katmani%%%

    trvo = a*yo.*(1-yo); %logsig hata fonksiyonunun cikis katmani icin turevi

    yerel_grao=e.*trvo; %cikis katmani yerel gradienti

    %%%egitim 2. gizli katman%%%

    trv2 = a*y2.*(1-y2); %logsig hata fonksiyonunun 2. gizli katman icin turevi

    indo = [agirlik_o(:,1:nn2)]; %indirgenmis agirlik matrisi

    yerel_gra2 = indo'*yerel_grao.*trv2; %2. gizli katman yerel gradienti

    %%%egitim 1. gizli katman%%%

    trv1 = a*y1.*(1-y1); %logsig hata fonksiyonunun 1. gizli katman icin turevi

    ind2 = [agirlik_2(:,1:nn1)]; %indirgenmis agirlik matrisi

    yerel_gra1 = ind2'*yerel_gra2.*trv1; %1. gizli katman yerel gradienti

    agirlik_o = agirlik_o+mu2.*yerel_grao*giris_o'; %cikis katmani parametresi olarak mu2 kullanildi

    agirlik_2 = agirlik_2+mu2.*yerel_gra2*giris_2'; %2.gizli katman parametresi olarak mu2

    agirlik_1 = agirlik_1+mu1.*yerel_gra1*giris_1'; %1.gizli katman parametresi olarak mu1

    end%egitim

    hata_top=0.25*sum(hata_kon');

    hata_top_v(l,1)=hata_top(:);

    hata_lim=0.01;

    if hata_top<hata_lim

    break;

    end%if

    end%iterasyon

    plot(hata_top_v,'*')

    %%%%%%test%%%%%%%

    test_kumesi_g=[0.9 0.9 0.9 0.1 0.9 0.1 0.9 0.9 0.1];

    tgiris_1=[test_kumesi_g(1,:)';1];

    v1=agirlik_1*tgiris_1;

    y1=1./(1+exp((-1)*a*v1));

    giris_2=[y1;1];

    v2=agirlik_2*giris_2;

    y2=1./(1+exp((-1)*a*v2));

    giris_o=[y2;1];

    vo=agirlik_o*giris_o;

    yot=1./(1+exp((-1)*a*vo))

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tuncaxxz
    tuncaxxz's avatar
    Kayıt Tarihi: 23/Ağustos/2005
    Erkek

    hocam matlab kendisi direk kendi kodlarını C kodu olarak çevirebiliyor. C biliyorsan eğer ordan javaya geçirmek çok daha kolay olacaktır. bir kaç bişey haricinde değiştireceğin yer olmaz sanırım. tabiki class vs kullanacaksan iş biraz değişir. 

    http://www.mathworks.com/videos/generating-c-code-from-matlab-code-68964.html

    Matlab demo videosu burda işine yarar umarım. 


    punto cero
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fortunate1357
    fortunate1357's avatar
    Kayıt Tarihi: 17/Mayıs/2007
    Erkek

    Çok sağ ol abi bunu bir deneyeyim bakalım bir şeyler çıkar belki

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tuncaxxz
    tuncaxxz's avatar
    Kayıt Tarihi: 23/Ağustos/2005
    Erkek

     

    yukardakinden bişey çıkmazsa diye ben yine de açıklamalarını yazayım hocam

     

    agirlik_1=0.25*randn(nn1,ng+1); %0.25,-0.25 arasında rastgele sayılarla [nn1,ng+1] boyutlu matris üretir.
    
    agirlik_2=0.25*randn(nn2,nn1+1);%bunlar da aynı şekilde
    
    agirlik_o=0.25*randn(nn0,nn2+1);%
    
    ---------------------------
    
    giris_1=[egitim_kumesi_g(k,:)';1];%egitim_kumesi_g matrisinin ilk satırını sutün olarak alır +1 eleman olarak sonuna 1 ekler. yani ilk satırda 9 eleman varsa 10. eleman 1 olur.
    
    cikis=egitim_kumesi_c(k,:)';%egitim_kumesi_c matrisininilk satırını sutün olarak alır
    
    v1=agirlik_1*giris_1;%iki matrisi çarpar
    
    y1=1./(1+exp((-1)*a*v1));%v1 matrisinin her elemanı icin bu işlem yapılır. sonuç matris olarak cikar
    
    giris_2=[y1;1];%y1 matrisine +1 eleman olarak 1'i ekler
    
    v2=agirlik_2*giris_2;%iki matrisi çarpar
    
    y2=1./(1+exp((-1)*a*v2));%v2 matrisinin her elemanı icin bu işlem yapılır. sonuç matris olarak cikar
    
    giris_o=[y2;1];%+1 eleman olarak 1'i ekler.
    
    vo=agirlik_o*giris_o;%matrisleri çarpar
    
    yo=1./(1+exp((-1)*a*vo));%vo matrisinin her elemanı icin bu işlem yapılır. sonuç matris olarak cikar
    
    e=cikis-yo;%matrisleri cikarir
    
    hata=0.5*(e'*e);%e matrisi ile transpozesini 0.5 ile çarpar
    
    hata_kon(k,1)=hata(:);
    
    -------------------------------

    hocam gerisini çıkarabilirsin umarım. 

    .* , ./ , .\   matrislerde eleman elemana olan işlemler. matris çarpması değilde karşılıklı elemanları çarpıyosun bölme de aynı şekilde.

    " ' " bu kesme işareti matrisin transpozesini alır.

     

    birde matrislerde eleman sınırlaması gibi bişey ismini tam bilmiyorum şimdi onu çok kullanmış. yani mat(100,50) olsun.

    mat(30:50,10:20)  diye yazan şey  mat matrisinin  30ile50. sutünları arasıyla 10ile20. satırları arasında kalan alandaki elemanların kaldığı matrisi alır. rakam yok sadece  " : " varsa bütün satırları yada sutünları alır.

    başkada yok sanırım. takıldığınız bir yer olursa açıklamaya çalışırım yine de.

     

     

     

     

     

    tuncaxxz tarafından 16/May/13 07:52 tarihinde düzenlenmiştir

    punto cero
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fortunate1357
    fortunate1357's avatar
    Kayıt Tarihi: 17/Mayıs/2007
    Erkek

    Bu açıklama daha iyi oldu benim için. Teşekkür ederim çok işime yaradı.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fortunate1357
    fortunate1357's avatar
    Kayıt Tarihi: 17/Mayıs/2007
    Erkek

     

    Kodun çok büyük bir kısmını bitirdim, çoğu yeri anladım sağ olsun tuncaxxz çok yardımcı oldu ama son 4 farklı satır kaldı. Bunları bir türlü anlamadım.  : operatorunu açıklayabilecek biri var mı?

    Kalan satırlar:

     

    hata_kon(k,1)=hata(:);  %%hata ve hata_kon birer matris

    indo = [agirlik_o(:,1:nn2)]; %%agirlik_o matris

    ind2 = [agirlik_2(:,1:nn1)]

    hata_top_v(l,1)=hata_top(:); 

     

     

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sherlock.
    r10aldinho
    r10aldinho's avatar
    Kayıt Tarihi: 24/Eylül/2008
    Erkek
    fortunate1357 bunu yazdı

     

    Kodun çok büyük bir kısmını bitirdim, çoğu yeri anladım sağ olsun tuncaxxz çok yardımcı oldu ama son 4 farklı satır kaldı. Bunları bir türlü anlamadım.  : operatorunu açıklayabilecek biri var mı?

    Kalan satırlar:

     

    hata_kon(k,1)=hata(:);  %%hata ve hata_kon birer matris

    indo = [agirlik_o(:,1:nn2)]; %%agirlik_o matris

    ind2 = [agirlik_2(:,1:nn1)]

    hata_top_v(l,1)=hata_top(:); 

     

     

    : matris veya dizi için tüm elemanları alır.

    hata_kon(k,1)=hata(:); %burada hata'nın tüm elemanlarını hata_kon'a k adet satır ve 1  sütun olarak aktarmış.(hata'nın tüm elemanlarını k adet satır ve 1 adet sütun olarak hata_kon'a aktarmış)

    indo = [agirlik_o(:,1:nn2)]; % burada ise agirlik_o'nun tüm satırlarını ve 1'den nn2'ye kadar olan sütunlarını indo'ya aktarmış.

    ind2 = [agirlik_2(:,1:nn1)] % burada agirlik_2'nin tüm satırlarını ve 1'den nn1'e kadar olan sütunlarını ind2'ye aktarmış.

    hata_top_v(l,1)=hata_top(:);  % hata_top'un tüm elemanlarını l adet satır ve 1 adet sütun  olarak hata_top_v'ye aktarmış


    İlk batışını ben gördüm güneşin, Gün dönümüne sen yetiştin, Kaptanı benim bu geminin, En son ben çıkarım, Panik etmeyin ___________________________________________________________ iletisim: www.tahribat.com@gmail.com
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fortunate1357
    fortunate1357's avatar
    Kayıt Tarihi: 17/Mayıs/2007
    Erkek

    Çok sağ ol hocam  beni büyük bir dertten kurtardın.

Toplam Hit: 1222 Toplam Mesaj: 8