我在C上使用64位Ubuntu 14.04。從C中的不同文本文件創建一個數組數組C
我有許多.txt文件,每個文件都包含浮點值行(每行1個值)。這些線表示一個複雜樣本的一部分,並且它們以真實(a1)\ n imag(a1)\ n real(a2)\ n imag(a2)的形式存儲,如果有意義的話。
在一個特定的場景中有4個文本文件,每個文件包含32768個樣本(因此65536個值),但是我需要使最終版本動態以容納多達32個文件(儘管每個文件的最大樣本數不會超過32768) 。儘管如此,我只會讀取前19800個樣本(取決於其他事物),因爲整個信號包含在這39600個點(19800個樣本)中。
一個常見的抽象是表示文件/樣本作爲一個矩陣,其中列表示的返回信號和行以採樣時刻表示各信號的值,直到最大持續時間。
我想要做的是從每個返回信號中取出第一個樣本,並將其移入雙精度浮點值的數組中,以完成一些工作,然後轉到第二個樣本以獲取每個信號(其中將覆蓋前面的數組),並對它們做一些處理,等等,直到最後一行樣本被處理完畢。
是否有一種方法可以動態地爲每個信號打開文件(取決於在該特定實例中使用的脈衝數),將每個文件的第一個樣本讀入緩衝區並將其發送到被處理。在下一次迭代中,文件指針將全部與第二個樣本對齊,然後將它們移入數組並重新發布,直到達到所需數量的樣本(我們假設的情況下爲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)。
如果有任何想法/意見/建議,我很願意聽到他們的聲音。
謝謝。
在程序開始處已知文件列表,還是在程序運行時創建新文件時進行實時處理? – 2014-10-02 14:07:24
是的,文件是rx_1_out.txt,其中1代表脈衝數。 – user2742907 2014-10-02 17:15:51