我有两个文件,第一个看起来像这样
125 6.678
435 9.084
234 8.874
Run Code Online (Sandbox Code Playgroud)
等我的程序生成的大约2,048,000个条目.第二个文件是由gnuplot生成的文件,看起来有点像:
65 321456 985
78 98374 834
54 8493 848
Run Code Online (Sandbox Code Playgroud)
等约有2,048,000个参赛作品.
现在我需要做的是用3D中的gnuplot绘制第一个文件的第二列和第二个文件的两列.我认为第一个任务是将它们全部放入同一个文件中,我只想编写一个简单的c程序,快速读取这两个文件并将相关列放在一个文件中,但我不知道该怎么做.我知道如何复制文件的全部内容并使用ac程序将它们写入另一个文件 - 例如,为此,我有以下代码:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char * argv[])
{
FILE *avalanche_size_BM;
FILE *avalanche_size_BM_2000;
char ch;
avalanche_size_BM = fopen("/Users/maheensiddiqui/Documents/MSc_Proj/avalanche_size_BM.dat","r");
if (avalanche_size_BM == NULL)
{
printf("I couldn't open.\n");
exit(0);
}
avalanche_size_BM_2000 = fopen("/Users/maheensiddiqui/Desktop/avalanche_size_BM_2000.dat", "w");
if (avalanche_size_BM_2000 == NULL)
{
printf("I couldn't open.\n");
exit(0);
}
printf("\n success!!");
while((ch=getc(avalanche_size_BM))!=EOF)
putc(ch,avalanche_size_BM_2000);
fclose(avalanche_size_BM);
fclose(avalanche_size_BM_2000);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
但是我怎么告诉它只读第一个文件中的第二列和第二个文件中的前两列并将它们(而不是所有列)复制到第三个文件,我可以用它来绘制我的三维图.
任何帮助都感激不尽!
谢谢
我已经为.dat文件中的一些数据创建了直方图
binwidth=...
bin(x,width)=width*floor(x/width)
plot 'file' using (bin($1,binwidth) + binwidth/2):(1.0) smooth freq with boxes
Run Code Online (Sandbox Code Playgroud)
但是因为我的文件有超过1,000,000个条目,它从中读取并放入不同的箱中,我不知道每个箱的确切频率/密度.我想知道频率或者它可能将频率写入文件,是否有人知道它是否可能?我还想知道是否可以在y轴上绘制百分比,而不是频率,例如,如果我的频率是50,000,我的总数是1,000,000然后在y轴上有百分比而不是实际频率?
谢谢
我有一个包含大约2,000,000个条目的文件 - 只有一列包含许多条目,所有数字.我想快速找出文件中最常见的数字是什么..有没有办法用unix做到这一点?我知道如何使用gnuplot这样做,但这是一个有点乏味的方式,并想知道是否只是通过使用一些unix命令更简单的方法?就像我的档案一样
1
1
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
然后我希望它读取文件并给我答案1,因为这是最常见的.