C 矩阵转置

C 矩阵转置,c,c++11,intel,intel-mkl,C,C++11,Intel,Intel Mkl,我有一个非常大的矩形和方形浮点以及复杂的矩阵。我想知道有没有MKL转置程序?mkl中有mkl?imatcopy,请帮我举个例子 我已经试过了,但它并没有转换矩阵 size_t nEle = noOfCols * noOfRows; float *data = (float*)calloc(nEle,sizeof(float)); initalizeData(data,noOfCols,noOfRows); printdata(data,noOfCols,noOfR

我有一个非常大的矩形和方形浮点以及复杂的矩阵。我想知道有没有MKL转置程序?mkl中有mkl?imatcopy,请帮我举个例子

我已经试过了,但它并没有转换矩阵

    size_t nEle = noOfCols * noOfRows;
    float *data = (float*)calloc(nEle,sizeof(float));
    initalizeData(data,noOfCols,noOfRows);
    printdata(data,noOfCols,noOfRows);
    printf("After transpose \n\n");
    mkl_simatcopy('R','T',noOfCols,noOfRows,1,data,noOfPix,noOfCols); 
    //writeDataFile((char *)data,"AfterTranspose.img",nEle*sizeof(float));
    printdata(data,noOfCols,noOfRows);

您可以尝试查看浮点实型和复杂数据类型的现有就地转置例程。MKL包包含这样的示例:cimatcopy.c dimatcopy.c simatcopy.c zimatcopy.c。请参阅mklroot/examples/transc/source目录

查看
imatcopy
(到位),而不是
omatcopy
(错位)。使用示例是MKL分布的一部分。size_t nEle=noOfCols*noOfRows;浮点数据=(浮点*)calloc(nEle,sizeof(浮点));初始化数据(数据、noOfScan、noOfPix);打印数据(数据、noOfScan、noOfPix)//writeDataFile((char*)数据,“beforeTranpse.img”,nElesizeof(float));printf(“转置后\n\n”);mkl_simatcopy('R','T',noOfScan,noOfPix,1,data,noOfPix,noOfScan)//writeDataFile((char)数据,“posterTranspose.img”,nElesizeof(float));打印数据(数据、noOfScan、noOfPix);什么是
noOfPix
?此外,您似乎正在交换行和列。我还没有测试,但是,对于一个分配了精确大小的行主矩阵(正如您所做的),我认为调用应该是:
mkl_simatcopy('R','T',noOfRows,noOfCols,1,data,noOfCols,noOfRows)
您能添加一个这样的示例吗?