---
title: guru r2r矩阵转置功能
description: "通过guru类r2r接口的特殊用法，可以实现矩阵转置功能。使用KML_FFT guru类接口创造一个rank为0，howmany_rank为2的转换。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2300/accel/kunpengaccel_kml_16_0247.html
sourcePath: /source/zh/kunpengboostkithistory/2300/accel/kunpengaccel_kml_16_0247.html
indexId: c4e9b0d5483c7ba3e309b7c492abde15f149ebc564295cac175845aadf8986b474
---
# guru r2r矩阵转置功能

通过guru类r2r接口的特殊用法，可以实现矩阵转置功能。使用KML_FFT guru类接口创造一个rank为0，howmany_rank为2的转换。

例：
```
kml_fft_plan plan_transpose(int rows, int cols, double *in, double *out)
{
const unsigned flags = KML_FFT_ESTIMATE;
kml_fft_iodim howmany_dims[2];
howmany_dims[0].n  = rows;
howmany_dims[0].is = cols;
howmany_dims[0].os = 1;
howmany_dims[1].n  = cols;
howmany_dims[1].is = 1;
howmany_dims[1].os = rows;
return kml_fft_plan_guru_r2r(/*rank=*/ 0, /*dims=*/ NULL,
/*howmany_rank=*/ 2, howmany_dims,
in, out, /*kind=*/ NULL, flags);
}
int main() {
int len = 12;
int rows = 3;
int cols = 4;
double *in = (double *)malloc(len * sizeof(double));
for(int i = 0; i < len; i++) {
in[i] = i;
}
/*
* 0 1 2 3
* 4 5 6 7
* 8 9 10 11
*/
kml_fft_plan p = plan_transpose(rows, cols, in, in);
kml_fft_execute(p);
/*
* 0 4 8
* 1 5 9
* 2 6 10
* 3 7 11
*/
free(in);
kml_fft_destroy_plan(p);
}
```
