---
title: PolarToCart
description: "极坐标转直角坐标。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/accel/kunpengaccel_hmpp_06_0169.html
sourcePath: /source/zh/kunpengboostkithistory/2200/accel/kunpengaccel_hmpp_06_0169.html
indexId: 9c428205a6e332bc4232de7fcb1debe7aabe3fb35925d87521a7ce3c0914ca6b75
---
# PolarToCart

极坐标转直角坐标。

公式如下：


函数接口声明如下：

- 整型数的操作：
  HmppResultHMPPS_PolarToCart_16sc_S(constint16_t*srcMagn, constint16_t*srcPhase, Hmpp16sc*dst, int32_tlen, doublemagnScale, double phaseScale);

- 浮点数的操作：
  HmppResultHMPPS_PolarToCart_32f(constfloat*srcMagn, constfloat*srcPhase, float*dstRe, float*dstIm, int32_tlen);

  HmppResultHMPPS_PolarToCart_64f(constdouble*srcMagn, constdouble*srcPhase, double*dstRe, double*dstIm, int32_tlen);

  HmppResultHMPPS_PolarToCart_32fc(constfloat*srcMagn, constfloat*srcPhase, Hmpp32fc*dst, int32_tlen);

  HmppResultHMPPS_PolarToCart_64fc(constdouble*srcMagn, constdouble*srcPhase, Hmpp64fc*dst, int32_tlen);


#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| srcMagn | 指向极径源向量的指针。 | 非空 | 输入 |
| srcPhase | 指向极角源向量的指针。 | 非空 | 输入 |
| len | 向量长度。 | (0,INT\_MAX] | 输入 |
| dst | 指向复数目标向量的指针。 | 非空 | 输出 |
| dstRe | 指向复数实部目标向量的指针。 | 非空 | 输出 |
| dstIm | 指向复数虚部目标向量的指针。 | 非空 | 输出 |
| magnScale | 极径的缩放因数。 | (0, inf)且为2n | 输入 |
| phaseScale | 极角的缩放因数。 | (0, inf)且为2n | 输入 |


#### 返回值

- 成功：返回HMPP_STS_NO_ERR。
- 失败：返回错误码。


#### 错误码

| 错误码 | 描述 |
| --- | --- |
| HMPP\_STS\_NULL\_PTR\_ERR | 当任何指定的指针为空时指示错误。 |
| HMPP\_STS\_SIZE\_ERR | len小于或等于0。 |
| HMPP\_STS\_SCALE\_ERR | magnScale或者phaseScale不在(0,INF)范围内或输入为NAN。 |
| HMPP\_STS\_MALLOC\_FAILED | Init函数中进行算法模型所需内存申请失败。 |


#### 示例

```
#define SRC_LEN 8
void PolarToCartExample(void)
{
int32_t len = SRC_LEN;
float srcMagn[SRC_LEN] = { 4.94, -2.39, -6.89, 54602.84, 8.17, 9.61, -7.003, 8.9 };
float srcPhase[SRC_LEN] = { 4.0, 2.67, -1.02, -1.23, -6.84, -5.73, 3.89, 9.54 };
float dstRe[SRC_LEN] = { 0.0f };
float dstIm[SRC_LEN] = { 0.0f };
HmppResult result = HMPPS_PolarToCart_32f(srcMagn, srcPhase, dstRe, dstIm, len);
printf("HMPPS_PolarToCart_32f result = %d\n", result);
if (result != HMPP_STS_NO_ERR) {
return;
}
int32_t i;
printf("len = %d\ndstRe =", len);
for(i = 0; i < len; ++i){
printf(" %f", dstRe[i]);
}
printf("\ndstIm =");
for(i = 0; i < len; ++i){
printf(" %f", dstIm[i]);
}
printf("\n");
}
```

运行结果：


```
HMPPS_PolarToCart_32f result = 0
len = 8
dstRe = -3.228999 2.129122 -3.605992 18250.328125 6.935862 8.176719 5.131613 -8.840986
dstIm = -3.738604 -1.085790 5.871024 -51462.562500 -4.317721 5.049095 4.765349 -1.023208
```
