我试图使用plotutils从二进制数据生成一个图。首先,我编写了一个C程序来导出一些样本二进制数据。然后,当我在终端中执行以下命令时,将按预期生成绘图。
graph -T png -I d <'/Users/username/Documents/Restofpath/PlotutilsDataGen/testData'> '/Users/username/Documents/Restofpath/PlotutilsDataGen/testPlot.png'
但我希望将此命令与生成二进制数据文件的C代码结合使用,以便在执行代码后,将自动导出绘图。我尝试了两种方法:(i)使用我怀疑我做错的popen()
,以及(ii)使用我认为应该有效的system()
,但不是。我的整个代码如下(我已经在代码中列出了两种方法,我自然会单独尝试它们):
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int numSamples = 1024;
double outputVec[2*numSamples];
char outputPath[200] = "/Users/username/Documents/Restofpath/PlotutilsDataGen/testData";
char plotcommand[400] = "graph -T png -I d <'/Users/username/Documents/Restofpath/PlotutilsDataGen/testData'> '/Users/username/Documents/Restofpath/PlotutilsDataGen/testPlot.png'";
FILE *fp, *p;
// Compute sample functions to export
for(int ii = 0; ii < (2*numSamples); ii = ii + 2)
{
outputVec[ii] = (double)ii/2;
outputVec[ii+1] = (double)(ii*2);
}
// Export as binary data file for plotutils to use for plotting
fp = fopen(outputPath, "wb");
fwrite(outputVec, sizeof(double), 2*numSamples, fp);
fclose(fp);
// Option 1
p = popen(plotcommand, "w");
pclose(p);
// Option 2
system(plotcommand);
return 0;
}
关于我做错了什么或者我如何让它发挥作用的任何想法?感谢。