C语言中二维数组做参数的使用小结

来源:互联网 发布:java文章管理系统 编辑:程序博客网 时间:2024/05/16 09:10
使用lapack求解Ax=B。程序中a,b,x都是矩阵,创建时因无法确定元素个数,因此采用动态分配malloc语句。而采用lapack求解时其参数为一维数组,因此需要先进行二维向一维转换,转换时一维数组的创建应同样采用malloc。
void lapack(double **a,double **b,double **x){lapack_int n=row_a,nrhs=col_b,lda=n,ldb=nrhs,info;lapack_int i,j,*ipiv;double *a1,*b1,*atemp,*btemp;//use malloc to create one diamond array:atemp and btempatemp=(double *)((n*n)*sizeof(double));btemp=(double *)((nrhs*n)*sizeof(double));ipiv=(int *)(n*sizeof(int));for(i=0;i<n;i++){//a1 stores a row of array aa1=a[i];for(j=0;j<n;j++){//two diamond change to one diamondatemp[i*n+j]=a1[j];}}......//x stores in b arrayinfo=LAPACKE_dgesv(...);//b and x have changed row & colfor(i=0;i<n;i++){for(j=0;j<nrhs;j++){x[j][i]=btemp[i*nrhs+j];}}}



原创粉丝点击