기고글 토론 "MQL5에서 행렬 및 벡터 연산" - 페이지 6

 
Rashid Umarov #:
내일 이 토론의 모든 질문을 쉬었다가 다시 읽으셔야 합니다.

여러분의 조언이 도움이 되었습니다.

하지만 여전히 질문이 남아서 고민 중입니다:

1. 행렬을 벡터로 나누어야 하는데, 이는 각 행/열의 합계가 있고 각 셀의 백분율을 알아야 할 때 백분율을 계산하는 일반적인 작업으로 매우 까다로운 작업입니다.

   matrixf Test;
   Test.Init(3,2);
   Test.Fill(1);//행렬을 0으로 채웁니다.

   vectorf Zero;
   Zero.Init(3);
   Zero.Fill(0);//행렬을 0으로 채웁니다.

   Zero=Test/Zero;

오류가 발생합니다.

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

벡터에서 행렬을 만들 때 기본적으로 열을 복제하여 계산이 수행되는 행렬의 크기를 복원하는 경우 이 방식은 불필요하게 많은 메모리를 소모합니다. 행렬에서 주기적으로 벡터를 가져오는 것은 리소스를 많이 소모하며 합리적이지 않습니다.

2. 때때로 제수가 0인 경우 "-nan(ind)"를 얻습니다. - 그러나 이것은 추가 작업에 그다지 편리하지 않습니다.이 경우 0 또는 다른 강제 값을 얻거나이 셀에서 계산을 수행하지 않을 가능성이있을 수 있습니다-선택에 따라?

   matrixf Test;
   Test.Init(3,2);
   Test.Fill(0);//행렬을 0으로 채웁니다.

   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 #:

조언이 도움이 되었습니다.

하지만 지금은 여전히 궁금합니다:

1. 행렬을 벡터로 나누어야 하는데, 이는 각 행/열의 총합이 있고 각 셀의 백분율을 알아야 할 때 백분율을 계산하는 일반적인 작업으로 매우 까다로운 작업입니다.

오류가 발생합니다.


모든 것을 깨고 싶은 욕망이 있습니다. 더 이상 도와드리지 않겠습니다. 예제를 보면 마음이 아픕니다.

//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 기능|
//+------------------------------------------------------------------+
void OnStart()
 {
//---
   matrixf m;
   m.Init(3,2);
   m.Fill(7);//0이 아닌 행렬로 채우기

   vectorf divider;
   divider.Init(2);
   divider.Fill(3);//벡터를 0으로 채우지 않습니다.

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

당신은 모든 것을 깨고 싶은 욕망이 있습니다. 더 이상 도와드리지 않겠습니다. 이런 사례를 보면 마음이 아픕니다.

구문이 안 맞는 것 같아요)))))

 
Rashid Umarov #:

당신은 모든 것을 깨고 싶은 욕망이 있습니다. 더 이상 도와드리지 않겠습니다. 이런 사례를 보면 마음이 아픕니다.

따라서 더 안정적으로 수행하십시오 :)))))))

예제가 잘못되었습니다. 행렬의 각 열을 벡터 행의 해당 값으로 나누어야합니다. 즉, 벡터는 행이 아닌 열을 나타내야합니다. 그런 다음 행렬을 전치해야한다는 것을 이해합니다..... 루프 없이도 가능하다고 생각했습니다.

그리고 물론 두 번째 질문에 대한 답변에 매우 관심이 있습니다. 답도 아니고 0으로 나눌 때 최종 행렬에 0을 넣을 수있는 가능성을 추가하는 것입니다.

 
그 남자는 이미 뇌관을 부러 뜨 렸고 곧 행렬이 남지 않을 것입니다.)
 
Maxim Dmitrievsky #:
그 남자는 이미 캣버스터를 깨뜨렸고 곧 매트릭스가 남지 않을 것입니다 )

거짓 정보를 던짐으로써 당신은이 자원에 대한 존경받는 사람의 진술을 강화하고 분명히 그의 권위에 집착하고 나를 나쁜 빛으로 만들려고 노력합니다,

개인적인 원한이 있습니까?

 
Aleksey Vyazmikin #:

허위 정보를 넣음으로써 이 리소스에서 존경받는 사람의 발언을 증폭시켜 그의 권위에 집착하고 저를 나쁘게 보이게 하려는 의도가 분명합니다,

개인적인 원한이 있나요?

유머는 아직 금지되지 않았다고 생각합니다.

 
Maxim Dmitrievsky #:

아직 유머를 금지하지는 않은 것 같습니다.

아마 재밌을 거예요. 그 발언의 진짜 전제가 무엇인지 짐작할 수도 있습니다. 그러나 MoD 스레드의 단골이 아니라면 우리가 무슨 말을 하는지 이해하는 사람은 거의 없을 것입니다.

행렬의 새로운 구문을 이해하고 있으며 저만 그렇게 생각하는 데 서투른 사람인가요?

 
Aleksey Vyazmikin #:

재밌을지도 모르죠. 그 발언의 진짜 전제가 무엇인지 짐작할 수도 있습니다. 하지만 MoD 스레드의 단골이 아니라면 그 내용을 이해하는 사람은 거의 없을 것입니다.

행렬의 새로운 구문을 이해하고 계신가요, 저만 생각에 서툰 건가요?

나는 그것을 읽지 않았고, 모든 곳에서 다르게 구현되어 있으며, 당신은 단지 특성을 살펴보기 만하면됩니다.

저는 파이썬에서 데이터 프레임을 직접 사용하고 있으며 고유 한 특성이 있습니다.

 

한 행렬에서 다른 행렬로 열을 복사하는 방법을 명확히 설명해주세요!

벡터로 복사를 통한 예제를 이해하지 못합니다.

vector matrix::Col(
  const ulong   ncol      // 열 번호
   );
 
void matrix::Col(
  const vector  v,        // 열 벡터
  const ulong   ncol      // 열 번호
   );

다음은 제 코드의 일부입니다.

   for(P=0; P<Type_Q_Perebor; P++)
   {
      matrixf m_Data_calc;//계산용 테이블이 있는 행렬
      vectorf V_Data_calc;//배열에서 행렬로의 전송을 위한 벡터
      switch(P)
      {
      case 0:
         m_Data_calc.Init(Strok_Total_Data*N_1, 1);//매트릭스 초기화
         m_Data.Reshape(Strok_Total_Data, Stolb_Total_Data);//데이터로 행렬 크기 개선하기
         break;
      case 1:
         m_Data_calc.Init(Strok_Total_Data*N_0, 1);//매트릭스 초기화
         m_Data.Reshape(Strok_Total_Data, Stolb_Total_Data);//데이터로 행렬 크기 개선하기
         break;
      }

      V_Data_calc.Cov(m_Data_calc,0);//행렬에서 열 벡터를 복사합니다.
      m_Data_calc.Col(V_Data_calc,0);//열 벡터를 행렬에 복사합니다.
   }

오류가 발생합니다.

'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