2

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

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

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

没有人知道如何将这些数组适当地保存在文件中吗?

4

3 回答 3

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
];
情节(一);

于 2013-08-03T17:37:44.620 回答
2

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

a = [
1,
2,
3,
4,
5
];
b = [
2,
4,
6,
8,
10
];
plot(a);
plot(b);
于 2013-08-03T17:05:13.790 回答
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

而已!

于 2013-08-03T21:50:29.067 回答