gpt4 book ai didi

在 C 中从不同文本文件创建值数组

转载 作者:行者123 更新时间:2023-11-30 15:29:36 25 4
gpt4 key购买 nike

我在 64 位 Ubuntu 14.04 上使用 C 语言工作。

我有许多 .txt 文件,每个文件都包含浮点值行(每行 1 个值)。这些线代表复杂样本的一部分,并且它们存储为 real(a1)\n imag(a1)\n real(a2)\n imag(a2)(如果有意义的话)。

在特定场景中,有 4 个文本文件,每个文本文件包含 32768 个样本(因此有 65536 个值),但我需要使最终版本动态化以容纳最多 32 个文件(但每个文件的最大样本数不会超过 32768)。不过,我只会读取前 19800 个样本(取决于其他因素),因为整个信号包含在这 39600 个点(19800 个样本)中。

常见的抽象是将文件/样本表示为矩阵,其中列表示返回信号,行表示采样时刻的每个信号的值,直到最大持续时间。

我想要做的是从每个返回信号中获取第一个样本,并将其移动到 double 浮点值数组中以进行一些工作,然后移动到每个信号的第二个样本(这将覆盖之前的数组)并对它们做一些工作,依此类推,直到处理完最后一行样本。

有没有一种方法可以让我动态地打开每个信号的文件(取决于我在该特定实例中使用的脉冲数),将每个文件中的第一个样本读入缓冲区并将其发送出去处理。在下一次迭代中,文件指针将全部与第二个样本对齐,然后将它们移动到数组中并再次将其发送出去,直到达到所需的样本数量(在我们假设的情况下为 19800)。

我可以使用 fscanf 从文件中很好地读取示例:

rx_length = 19800;
int x;
float buf;

double *range_samples = calloc(num_pulses, 2 * sizeof(range_samples));

for (i=0; i < 2 * rx_length; i++){
x = fscanf(pulse_file, "%f", &buf);
*(range_samples) = buf;
}

(在我看来)需要发生的事情是我需要循环样本#和脉冲#(按顺序),因此当完成一个脉冲时,它将继续进行下一组样本脉搏等。我不知道该怎么做是以某种方式声明所有返回信号文件的文件指针,当它们的数量在调用之间可能变化时(例如,完成 4 个脉冲的整个操作,在下一次调用时它可以是 16 或64)。

如果有任何想法/意见/建议,我很乐意听到。

谢谢。

最佳答案

我会将您发布的代码制作为一个函数,该函数将文件名数组作为参数:

void doPulse( const char **file_names, const int size )
{
FILE *file = 0;

// declare your other variables

for ( int i = 0; i < size; ++i )
{
file = fopen( file_names[i] );

// make sure file is open
// do the work on that file

fclose( file );
file = 0;
}
}

关于在 C 中从不同文本文件创建值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com