Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将浮点数组传递给(void*)函数参数_C_Arrays - Fatal编程技术网

C 将浮点数组传递给(void*)函数参数

C 将浮点数组传递给(void*)函数参数,c,arrays,C,Arrays,我正在使用cblas\u icamax。我想将浮点向量z13]传递给cblas_icamax(见下文)。我的代码包括以下内容 float z[13] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f ,0.f, 0.f, 0.f, 0.f, 0.f}; //... for (i = 0; i < 13; i++) { printf("%.4f\n", z[i]); } int cardIndex = cbl

我正在使用
cblas\u icamax
。我想将浮点向量
z13]
传递给cblas_icamax(见下文)。我的代码包括以下内容

    float z[13] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f ,0.f, 0.f, 0.f, 0.f, 0.f};
//...

    for (i = 0; i < 13; i++) {
        printf("%.4f\n", z[i]);
    }
    int cardIndex = cblas_icamax(13,(float*) z,1);
    NSLog(@"cardIndex: %d", cardIndex);
打印结果如下所示,最大绝对值为138.1086,即位置10,但函数
cblas\u icamax
返回5。怎么了

-1.2624
74.1524
52.3533
89.9426
28.8639
-7.6203
-30.2820
48.9747
124.8693
29.4351
138.1086
36.2638
-45.0410

返回向量中绝对值最大的元素的索引(单精度复数)


我应该叫cblas_isamax,而不是cblas_icamax,因为我的数组不是复数。

我应该叫cblas_isamax,而不是cblas_icamax,因为我的数组不是复数。

数组中有13个
浮点数

您向库承诺您的数组中有13个
浮点复数
值(即26个
浮点
)。这种行为不符合预期也就不足为奇了。要么将复杂数据数组作为输入传递,要么改用
cblas\u isamax

为了更准确地解释发生了什么:
cblas_icamax
返回具有最大L1范数的复数浮点的索引。每个复数浮点是来自输入的一对浮点值。如果我们查看您输入的L1规范:

index        value            L1 norm
0      -1.2624 + 74.1524i     75.4148
1      52.3533 + 89.9426i    142.2959
2      28.8639 -  7.6203i     36.4842
3     -30.2820 + 48.9747i     79.2567
4     124.8693 + 29.4351i    154.3044
5     138.1086 + 36.2638i    174.3724
6     -45.0410 + ???i           ???
7          ??? + ???i           ???
8          ??? + ???i           ???
9          ??? + ???i           ???
10         ??? + ???i           ???
11         ??? + ???i           ???
12         ??? + ???i           ???

“??”字段表示未初始化的数据。因此,
cblas\u icamax
返回的结果显然是合理的;在初始化的字段中,它具有最大L1范数。当然,实际行为是未定义的,因为您告诉函数从未初始化(可能未映射)的内存中读取。

数组中有13个
浮点值

您向库承诺您的数组中有13个
浮点复数
值(即26个
浮点
)。这种行为不符合预期也就不足为奇了。要么将复杂数据数组作为输入传递,要么改用
cblas\u isamax

为了更准确地解释发生了什么:
cblas_icamax
返回具有最大L1范数的复数浮点的索引。每个复数浮点是来自输入的一对浮点值。如果我们查看您输入的L1规范:

index        value            L1 norm
0      -1.2624 + 74.1524i     75.4148
1      52.3533 + 89.9426i    142.2959
2      28.8639 -  7.6203i     36.4842
3     -30.2820 + 48.9747i     79.2567
4     124.8693 + 29.4351i    154.3044
5     138.1086 + 36.2638i    174.3724
6     -45.0410 + ???i           ???
7          ??? + ???i           ???
8          ??? + ???i           ???
9          ??? + ???i           ???
10         ??? + ???i           ???
11         ??? + ???i           ???
12         ??? + ???i           ???
“??”字段表示未初始化的数据。因此,
cblas\u icamax
返回的结果显然是合理的;在初始化的字段中,它具有最大L1范数。当然,实际行为是未定义的,因为您告诉函数从未初始化(可能未映射)的内存中读取

index        value            L1 norm
0      -1.2624 + 74.1524i     75.4148
1      52.3533 + 89.9426i    142.2959
2      28.8639 -  7.6203i     36.4842
3     -30.2820 + 48.9747i     79.2567
4     124.8693 + 29.4351i    154.3044
5     138.1086 + 36.2638i    174.3724
6     -45.0410 + ???i           ???
7          ??? + ???i           ???
8          ??? + ???i           ???
9          ??? + ???i           ???
10         ??? + ???i           ???
11         ??? + ???i           ???
12         ??? + ???i           ???