"MQL5'te matrisler ve vektörlerle çalışma" makalesi için tartışma - sayfa 6

 
Rashid Umarov #:
Dinlenmeniz ve yarın bu tartışmadaki tüm sorularınızı tekrar okumanız gerekiyor.

Tavsiyeniz yardımcı oldu, teşekkür ederim.

Ama şimdi hala sorularla boğuşuyorum:

1. Bir matrisi bir vektöre bölmem gerekiyor - bu, her satırın / sütunun toplamı olduğunda ve her hücrenin yüzdesini bilmem gerektiğinde, yüzdeleri hesaplamak için tipik bir görevdir - çok talep edilir.

   matrixf Test;
   Test.Init(3,2);
   Test.Fill(1);/Matrisi sıfırlarla doldurun

   vectorf Zero;
   Zero.Init(3);
   Zero.Fill(0);/Matrisi sıfırlarla doldurun

   Zero=Test/Zero;

Bir hata alıyorum

cannot convert type 'vectorf' to type 'matrixf' Primer_02.mq5   325     11
cannot convert type 'matrixf' to type 'vectorf' Primer_02.mq5   325     10

Bir vektörden bir matris oluşturursanız, esasen hesaplamanın yapıldığı matrisin boyutunu geri yüklemek için sütunları çoğaltırsanız, bu yaklaşım gereksiz yere çok fazla bellek tüketir. Vektörleri döngüler halinde bir matristen çıkarmak kaynak tüketir ve rasyonel görünmez.

2. Bazen bölen sıfırdır ve o zaman "-nan(ind)" elde ederiz. - ancak bu daha fazla çalışma için çok uygun değildir, belki bu durumda sıfır veya başka bir zorunlu değer alma veya bu hücrede hesaplama yapmama olasılığı vardır - seçimle?

   matrixf Test;
   Test.Init(3,2);
   Test.Fill(0);/Matrisi sıfırlarla doldurun

   float z=0;
   Test=Test/z;
   Print(Test);
2022.10.13 06:09:52.125 Primer_02 (EURUSD,H1)   [[-nan(ind),-nan(ind)]
2022.10.13 06:09:52.125 Primer_02 (EURUSD,H1)    [-nan(ind),-nan(ind)]
2022.10.13 06:09:52.125 Primer_02 (EURUSD,H1)    [-nan(ind),-nan(ind)]]
 
Aleksey Vyazmikin #:

Tavsiyeniz yardımcı oldu, teşekkür ederim.

Ama şimdi hala merak ediyorum:

1. Bir matrisi bir vektöre bölmem gerekiyor - bu, her satırın / sütunun toplamı olduğunda ve her hücrenin yüzdesini bilmem gerektiğinde, yüzdeleri hesaplamak için tipik bir görevdir - çok talep edilir.

Bir hata alıyorum


Her şeyi kırıp dökmek gibi bir arzunuz var. Kendiniz daha ileri gidin, size daha fazla yardım etmeyeceğim - örneklere bakmak acı veriyor

//+------------------------------------------------------------------+
//| Komut dosyası programı başlatma işlevi|
//+------------------------------------------------------------------+
void OnStart()
 {
//---
   matrixf m;
   m.Init(3,2);
   m.Fill(7);/Matrisi SIFIR OLMAYANLAR ile doldurun

   vectorf divider;
   divider.Init(2);
   divider.Fill(3);//Vektörü NONE sıfırları ile doldurun

   for(ulong i=0;i<m.Rows();i++)
     {
      m.Row(m.Row(i)/divider,i);
     }
   Print(m);  
 }
 
Rashid Umarov #:

Her şeyi kırıp dökmek gibi bir arzunuz var. Buradan sonrasını siz halledin, ben size daha fazla yardımcı olmayacağım, bunun örneklerini görmek canımı acıtıyor.

Sanırım söz dizimi gitmiyor)))))

 
Rashid Umarov #:

Her şeyi kırıp dökmek gibi bir arzunuz var. Buradan sonrasını siz halledin, ben size daha fazla yardımcı olmayacağım, bunun örneklerini görmek acı veriyor.

Öyleyse daha güvenilir bir şekilde yapın :)))))))

Örnek yanlış, matrisin her sütununu vektörün satırındaki karşılık gelen değere bölmem gerekiyor. Yani, vektör bir satırı değil, bir sütunu temsil etmelidir. Anladığım kadarıyla o zaman matrisi transpoze etmem gerekiyor..... Bunun bir döngü olmadan mümkün olduğunu düşünmüştüm.

Ve tabii ki ikinci sorunun cevabıyla çok ilgileniyorum. Bir cevap bile değil, daha ziyade sıfıra bölerken son matrise bir sıfır koyma olasılığı eklemek.

[Silindi]  
Adam çoktan catbuster'ları kırdı, yakında matrislerden geriye hiçbir şey kalmayacak)
 
Maxim Dmitrievsky #:
Adam catbuster'ı çoktan kırdı, yakında matrislerden geriye hiçbir şey kalmayacak)

Yanlış bilgiler vererek, bu kaynaktaki saygın bir kişinin ifadesini güçlendiriyor, görünüşe göre onun otoritesine bağlanmaya ve beni kötü göstermeye çalışıyorsunuz,

Kişisel bir garezin mi var?

[Silindi]  
Aleksey Vyazmikin #:

Yanlış bilgiler vererek, bu kaynaktaki saygın bir kişinin ifadesini güçlendiriyor, görünüşe göre kendinizi onun otoritesine bağlamaya ve beni kötü göstermeye çalışıyorsunuz,

Kişisel bir garezin mi var?

Mizahın henüz yasaklandığını sanmıyorum.

 
Maxim Dmitrievsky #:

Henüz mizahı yasakladıklarını sanmıyorum.

Muhtemelen komiktir. Hatta ifadenin gerçek dayanağını bile tahmin edebiliyorum. Ancak, MoD başlığının müdavimlerinden olmayan çok az kişi neden bahsettiğimizi anlayacaktır.

Matrislerin yeni sözdizimini anlıyor musunuz ve düşünme konusunda bu kadar kötü olan bir tek ben miyim?

[Silindi]  
Aleksey Vyazmikin #:

Belki de komiktir. İfadenin gerçek önermesini bile tahmin edebiliyorum. Ancak, Savunma Bakanlığı başlığının müdavimlerinden olmadıkları sürece çok az kişi bunun ne hakkında olduğunu anlayacaktır.

Matrislerin yeni sözdizimini anlıyor musunuz ve düşünme konusunda bu kadar kötü olan bir tek ben miyim?

Okumadım, her yerde farklı uygulanıyor, sadece özelliklerine bakmanız gerekiyor.

Sanırım her şey açık, ben de python'da dataframe kullanıyorum, kendine has özellikleri var.

 

Lütfen bir sütunun bir matristen diğerine nasıl kopyalanacağını açıklayın!

Örneği vektöre kopyalama yoluyla anlamıyorum.

vector matrix::Col(
  const ulong   ncol      // sütun numarası
   );
 
void matrix::Col(
  const vector  v,        // sütun vektörü
  const ulong   ncol      // sütun numarası
   );

İşte kodumun bir parçası

   for(P=0; P<Type_Q_Perebor; P++)
   {
      matrixf m_Data_calc;//Hesaplamalar için tablo içeren matris
      vectorf V_Data_calc;//Diziden matrise aktarım için vektör
      switch(P)
      {
      case 0:
         m_Data_calc.Init(Strok_Total_Data*N_1, 1);//Matrisi başlatın
         m_Data.Reshape(Strok_Total_Data, Stolb_Total_Data);//Verilerle matris boyutunu geliştirin
         break;
      case 1:
         m_Data_calc.Init(Strok_Total_Data*N_0, 1);//Matrisi başlatın
         m_Data.Reshape(Strok_Total_Data, Stolb_Total_Data);//Verilerle matris boyutunu geliştirin
         break;
      }

      V_Data_calc.Cov(m_Data_calc,0);/Matristeki sütun vektörünü kopyalayın
      m_Data_calc.Col(V_Data_calc,0);//Sütun vektörünü matrise kopyalayın
   }

Bir hata alıyorum

'Cov' - wrong parameters count  Tree_Analiz_Bi_V_2_4.mq5        219     19
   built-in: matrixf vectorf:Cov(const vectorf&)        Tree_Analiz_Bi_V_2_4.mq5        219     19