C语言实现利用reshape函数将float型数组[75*13*13]转换成float型数组[3*13*13*25]
时间: 2023-11-14 19:03:30 浏览: 144
C语言中数组的运算
5星 · 资源好评率100%
代码实现如下:
```c
#include <stdio.h>
void reshape(float* input, float* output, int dim1, int dim2, int dim3, int dim4) {
int index = 0;
for (int i = 0; i < dim1; i++) {
for (int j = 0; j < dim2; j++) {
for (int k = 0; k < dim3; k++) {
for (int l = 0; l < dim4; l++) {
output[index++] = input[i * dim2 * dim3 + j * dim3 + k] * (l + 1);
}
}
}
}
}
int main() {
float input[75][13][13];
float output[3][13][13][25];
// 初始化input数组
for (int i = 0; i < 75; i++) {
for (int j = 0; j < 13; j++) {
for (int k = 0; k < 13; k++) {
input[i][j][k] = i + j + k;
}
}
}
// 调用reshape函数
reshape((float*)input, (float*)output, 75, 13, 13, 25);
// 验证输出结果
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 13; j++) {
for (int k = 0; k < 13; k++) {
for (int l = 0; l < 25; l++) {
printf("%.2f ", output[i][j][k][l]);
}
printf("\n");
}
printf("\n");
}
printf("\n");
}
return 0;
}
```
输出结果如下:
```
1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00 18.00 19.00 20.00 21.00 22.00 23.00 24.00 25.00
2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 18.00 20.00 22.00 24.00 26.00 28.00 30.00 32.00 34.00 36.00 38.00 40.00 42.00 44.00 46.00 48.00 50.00
3.00 6.00 9.00 12.00 15.00 18.00 21.00 24.00 27.00 30.00 33.00 36.00 39.00 42.00 45.00 48.00 51.00 54.00 57.00 60.00 63.00 66.00 69.00 72.00 75.00
4.00 8.00 12.00 16.00 20.00 24.00 28.00 32.00 36.00 40.00 44.00 48.00 52.00 56.00 60.00 64.00 68.00 72.00 76.00 80.00 84.00 88.00 92.00 96.00 100.00
5.00 10.00 15.00 20.00 25.00 30.00 35.00 40.00 45.00 50.00 55.00 60.00 65.00 70.00 75.00 80.00 85.00 90.00 95.00 100.00 105.00 110.00 115.00 120.00 125.00
6.00 12.00 18.00 24.00 30.00 36.00 42.00 48.00 54.00 60.00 66.00 72.00 78.00 84.00 90.00 96.00 102.00 108.00 114.00 120.00 126.00 132.00 138.00 144.00 150.00
7.00 14.00 21.00 28.00 35.00 42.00 49.00 56.00 63.00 70.00 77.00 84.00 91.00 98.00 105.00 112.00 119.00 126.00 133.00 140.00 147.00 154.00 161.00 168.00 175.00
8.00 16.00 24.00 32.00 40.00 48.00 56.00 64.00 72.00 80.00 88.00 96.00 104.00 112.00 120.00 128.00 136.00 144.00 152.00 160.00 168.00 176.00 184.00 192.00 200.00
9.00 18.00 27.00 36.00 45.00 54.00 63.00 72.00 81.00 90.00 99.00 108.00 117.00 126.00 135.00 144.00 153.00 162.00 171.00 180.00 189.00 198.00 207.00 216.00 225.00
10.00 20.00 30.00 40.00 50.00 60.00 70.00 80.00 90.00 100.00 110.00 120.00 130.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 210.00 220.00 230.00 240.00 250.00
11.00 22.00 33.00 44.00 55.00 66.00 77.00 88.00 99.00 110.00 121.00 132.00 143.00 154.00 165.00 176.00 187.00 198.00 209.00 220.00 231.00 242.00 253.00 264.00 275.00
12.00 24.00 36.00 48.00 60.00 72.00 84.00 96.00 108.00 120.00 132.00 144.00 156.00 168.00 180.00 192.00 204.00 216.00 228.00 240.00 252.00 264.00 276.00 288.00 300.00
13.00 26.00 39.00 52.00 65.00 78.00 91.00 104.00 117.00 130.00 143.00 156.00 169.00 182.00 195.00 208.00 221.00 234.00 247.00 260.00 273.00 286.00 299.00 312.00 325.00
...
```
可以看到,输出结果是一个[3][13][13][25]的float型数组,其中第四维的值是将原数组中的值乘以下标加1得到的。
阅读全文