C ++最终保存在文件和绘图数据中

时间:2013-08-03 16:56:23

标签: c++ graphics

我用C ++编写了一个程序,最后得到了两个值数组。

现在我想保存它们并用外部程序(每个数组本身)绘制它们。

有人可以给我一个代码参考,如何将这些数组保存在一个文件中,以及(例如GNU)程序可以绘制它们吗?

没有人知道如何在文件中正确保存这些数组吗?

3 个答案:

答案 0 :(得分:2)

最简单的方法是将它们写入文本文件并将它们拖入GNU Octave(MATLAB克隆)。

a = [
1,
2,
3,
4,
5
];
b = [
2,
4,
6,
8,
10
];
plot(a);
plot(b);

答案 1 :(得分:2)

您需要做的就是打开一个文件进行写入并将数据写入其中。由于您没有提供有关如何管理阵列或其包含的数据类型的大量信息,因此很难提供除基本示例之外的任何其他内容。

下面的代码打开一个用于写入的文件并写出数组的内容。它以Octave可以使用的基本格式写入数据。您可以扩展示例以更好地满足您的确切需求。

#include <fstream>

void savedata(const std::string& filename, const double* data, size_t size)
{
    std::fstream out(filename);
    out << "a = [" << std::endl;
    for(size_t i = 0; i < size; ++i)
    {
        out << data[i] << ((i + 1 < size) ? "," : "") << std::endl;
    }
    out << "];" << std::endl;
    out << "plot(a);" << std::endl;
}

int main()
{
    double data[5] = {0, 1, 2, 3, 4};

    savedata("output.txt", data, 5);
}

这会产生以下输出

  

a = [
  0,
  1,
  2,
  3,
  4
  ];
  图(a)的

答案 2 :(得分:1)

我会推荐gnuplot。这就是我使用的。

它可以获得每行一个值的简单文件(或每行2个值,以空格分隔,用于X,Y绘图)

运行gnuplot后,只需执行命令

即可
plot 'filename' w l

它将用行显示文件名中的数据。

修改

从另一个答案复制代码并将其转换为gnuplot格式:

#include <fstream>

void savedata(const std::string& filename, const double* data, size_t size)
{
    std::fstream out(filename);
    for(size_t i = 0; i < size; ++i)
        out << data[i] << std::endl;
}

int main()
{
    double data[5] = {0, 1, 2, 3, 4};

    savedata("output.txt", data, 5);
}

然后从shell运行gnuplot并在gnuplot中运行命令

plot "output.txt" w l

就是这样!