【发布时间】:2017-12-08 23:18:24
【问题描述】:
我有一个数组(实际上是std::vector),大小约为 7k 个元素。
如果你画出这个数据,就会有一个燃料燃烧的图表。但我想将此向量从 7k 元素最小化到 721(每 0.5 度)元素或〜 1200(每 0.3 度)。当然我想保存图表一样。我该怎么做?
现在我将大向量中的每 9 个元素转换为新的元素,并从向量的前后均匀地切割其他元素以获得 721 大小。
QVector <double> newVMTVector;
for(QVector <double>::iterator itv = oldVmtDataVector.begin(); itv < oldVmtDataVector.end() - 9; itv+=9){
newVMTVector.push_back(*itv);
}
auto useless = newVMTVector.size() - 721;
if(useless%2 == 0){
newVMTVector.erase(newVMTVector.begin(), newVMTVector.begin() + useless/2);
newVMTVector.erase(newVMTVector.end() - useless/2, newVMTVector.end());
}
else{
newVMTVector.erase(newVMTVector.begin(), newVMTVector.begin() + useless/2+1);
newVMTVector.erase(newVMTVector.end() - useless/2, newVMTVector.end());
}
newVMTVector.squeeze();
oldVmtDataVector.clear();
oldVmtDataVector = newVMTVector;
我可以发誓有一种算法可以平均和减少数组。
【问题讨论】:
-
您当前的代码没有做什么?
-
您可以尝试使用
std::transform应用自定义 lambda 来平均数字。 -
我不确定我是否理解这个问题。您是说您有某种类型的向量,其中包含表示图表的信息?您是否想以某种方式减少向量的元素数量,以便仍然能够以较低的分辨率绘制相同的图表?
-
在什么方面更好?表现?图表的准确性?
-
"~7k" -- 到底有多少? 7200? 7201? |我看到这被标记为“stl”和“boost”,但是有一个来自 Qt 的向量类......为什么?|为什么你需要从你刚刚填充的向量中删除东西?|插值可能会有所帮助。
标签: c++ arrays vector boost stl