for (int i = 0; i < depth; i++){
for (int j = 0; j < height; j++){
for (int k = 0; k < width; k++){
h_fai[i][j][k] = 1.0;
}
}
}
思考发现,改变i,j,k循环顺序的话,实际导入fai值的逻辑会改变
(思考ele%d.txt不同导入顺序后文件内容的含义变化)
if (n % 100 == 99){
Status = cudaMemcpy2D(h_app, element_num*sizeof(float), dev_app, pitch, element_num*sizeof(float), compute_count, cudaMemcpyDeviceToHost);//每100步更新一次h_app
if (Status != cudaSuccess){
fprintf(stderr, "MemcpyDtH_p: %s\n", cudaGetErrorString(Status));//dev_app按照第1步,1-128号阵元获取的声压信号,第2步....保存信号
}
char name[10];
for (int j = 0; j<element_num; j++){
sprintf(name, "ele%d.txt", j);
FILE *ele = fopen(name, "wb");// 输出到elej.txt是按第j个阵元从第compute_count步到第1步获取的声压保存信号
for (int i = compute_count - 1; i >= 0; i--){
fprintf(ele, "%f\n", h_app[i][j]);
}
fclose(ele);
}
}
所以,方便起见,按照ijk的顺序导入CT值才是符合我们逻辑预期的CT方向,
即x方向插入(堆叠)每一片fai值,y方向插入每一行fai值,Z方向插入每个点fai值