我用C ++编写了一个程序,最后得到了两个值数组。
现在我想保存它们并用外部程序(每个数组本身)绘制它们。
有人可以给我一个代码参考,如何将这些数组保存在一个文件中,以及(例如GNU)程序可以绘制它们吗?
没有人知道如何在文件中正确保存这些数组吗?
答案 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
就是这样!