这是我在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;
}
答案 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;
}
我认为这会有所帮助。