如何从.txt文件创建一个运行平均值为15的值
How can I create a running average of 15 values from .txt file?
我正在尝试微调一个程序,该程序从.txt文件中获取一系列值,并创建15个运行平均值。例如,它将读取前15个值,在第15个数字旁边输出该平均值,然后它将读取值2-16,取平均值并在第16个数字旁输出。然后,它将读取值3-17,取平均值并在第17个数字旁边输出,依此类推。不幸的是,我的程序没有取得多大进展,但以下是我迄今为止的代码:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
#include <iomanip>
using namespace std;
#define ARRAYSIZE 10000
#define OTHER 10000
int main(void)
{
//things needed
ifstream infile;
ofstream outfile;
double xArray[ARRAYSIZE];
double yArray[ARRAYSIZE];
double average;
double sum = 0;
double sum2=0;
double average2;
infile.open("data.txt");
if (infile.fail()) {
cout << "can't open data.txtn";
exit(1);
}
for (int z = 0; z < 15; z++) {
infile >> xArray[ARRAYSIZE];
sum = xArray[ARRAYSIZE] + sum;
average = sum / (z+1);
}
outfile << xArray[ARRAYSIZE] << ", " << average << endl;
sum2 = sum;
//Running Average
for (int x = 0; x < 10000 && !infile.eof(); x++) {
infile >> yArray[OTHER];
sum2 = yArray[OTHER] + sum2;
average2 = sum2 / (x + 16);
cout << yArray[OTHER] << ", " << average2 << endl;
}
}
正如你所看到的,我可以得到所有东西的平均值,但我不能把我的平均值分成15个值段。
我不想只把工作代码交给您。但要想让你摆脱困境,请考虑以下方法:
- 声明一个正好包含15个元素的数组
- 将总和初始化为0
- 在所有传入元素上循环,执行以下操作:
- 为第一个元素保留一个从0开始并从0开始向上计数的索引值
i
- 如果您看到多于15个元素,请从总和中减去数组位置
i % 15
处的元素。这将从滚动和中删除滑出窗口的元素 - 从文件中读取一个新元素
- 将新元素添加到总和中。这会在元素滑入窗口时将其添加到滚动和中
- 将新元素存储在数组位置
i % 15
- 如果您看到了15个或更多元素,请将移动平均值输出为
sum / 15.0
- 为第一个元素保留一个从0开始并从0开始向上计数的索引值
移动平均的概念是只对窗口中的元素进行平均。数组跟踪窗口。
使用上面的算法,总和跟踪窗口中元素的总和。当您将元素添加到窗口时,您将它们添加到总和中。当您从窗口中删除元素时,您就从总和中删除了它们。
那么,移动平均值就是总和除以窗口的大小。
相关文章:
- 如何运行一个类的多个对象,该类的函数仅在C++中调用线程?
- 仅在 boost::hash_combine 中运行一个程序期间保证确定性
- c++:运行一个函数 8 次,并将每个答案添加到数组或 JSON 中
- 助推.如何在另一个测试单元中运行一个测试组件
- 如何编译和运行一个新的 C++ Actor 框架项目?
- 我想重新运行一个线程
- 如何使用c ++代码来调用和运行一个现有的python文件?
- 我想用 c++ 运行一个 vtk 示例,但我不知道如何导入所需的数据
- 首先我已经成功安装了 caffe,但是当我运行一个 caffe 项目时,cmake 还可以,后来会发出很多错误
- 为什么我需要运行一个应用程序作为Papi库工作的根源
- C++:如何运行一个系统命令N次(异步)并返回N次执行时间
- 并行运行一个应用程序,同时用 C++ 启动另一个应用程序
- 从Ubuntu到Debian运行一个可执行文件
- 在 Apache 上运行一个 C++ CGI 程序
- C++:如果输入不是整数,为什么这段代码会运行一个无休止的循环
- 在solaris中运行一个可执行的c++程序
- 如何在C++中创建一个循环,运行一个计时器并允许用户同时输入(非阻塞用户输入)
- 无论如何,我可以在visualstudio2005上与visualstudio2015一起运行一个已经编码的项目吗
- 如何启动一个 boost::线程运行一个成员函数
- 如何在QtCreator(Linux Ubuntu)中编译和运行一个随机的单个C++文件