在函数c ++中定义矩阵

时间:2015-03-25 08:30:10

标签: c++ matrix

这是我在ADtest.cpp中的代码,但是当我在mainwindow.cpp中调用此函数时,它会出错!我希望矩阵动态具有可变大小的行和列。老实说,我不擅长矩阵和指针和地址.. 如果有人帮助我并感谢你,我真的很感激。

#include "AD_test.h"
AD_test::AD_test()
{
}
bool AD_test:: test(float s, float *X[Ndft][N], int Ndft, float lambda,  int N)
{
int x=0;
cdf *f0;
f0=0;
float An[Ndft][N];

 for (int k=0; k<N; k++)
{
    cout <<"pour l'échantillon "<<k<<endl;
    for (int i=0; i<Ndft;i++)
    {
        An[i][k]=0;
        An[i][k]=-Ndft-((2*i-1)*(log(1-exp(-X[i][k]/(2*sqr(s))*(1+X[i][k]/(2*sqr(s)))))
        +log(1-(1-exp(-X[Ndft+1-i][k]/(2*sqr(s))*(1+X[Ndft+1-i][k]/(2*sqr(s)))))))/Ndft);

        if (An[i][k]>lambda)
        {
           cout << "H1=>signal détecté dans le bin " <<i << endl;
           x++;
        }
        else
          {
            cout <<"H0=>pas de signal dans le bin " <<i<< endl ;
            x--;
          }
     }
  }
  if (x>0)
   return true;
  return 0;
  }

1 个答案:

答案 0 :(得分:0)

使用指针数组或双指针。 在这个方法中,我们必须在传递给函数时对2D数组进行类型转换。

#include <stdio.h>

// Same as "void print(int **arr, int m, int n)"
void print(int *arr[], int m, int n)
{
    int i, j;
    for (i = 0; i < m; i++)
      for (j = 0; j < n; j++)
        printf("%d ", *((arr+i*n) + j));
}



int main()
{
    int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int m = 3;
    int n = 3;
    print((int **)arr, m, n);
    return 0;
}

我认为这会有所帮助。