我有n
个数量的向量(单列),它们是相关的。其中一个(让我们说第一个n
向量)中有一堆NaN
个。我使用erase - remove_if
成语来清除包含NaN
s的行的向量。我想同时或之后从所有其他向量中删除完全相同的行。这似乎是一个常见的编码问题,但我无法找到一个例子。我使用OpenCV库在C ++中进行编码。
这是我的代码示例,它不起作用,我认为这是Miki的建议
vector<float> RemoveManyEs(vector<float> &V1, vector<float> &V2, vector<float> &V3)
{
int length = V1.size();
int n = 0;
do
{
if (isnan(V1.at(n)))
{
V1.erase(V1.begin() + n);
V2.erase(V2.begin() + n);
V3.erase(V3.begin() + n);
}
n += 1;
} while (n < length);
return V1,V2,V3;
}
答案 0 :(得分:0)
考虑是否确实需要删除行或是否足以将它们设置为零。如果需要删除少于10%的行,那么删除它们对运行时的影响可以忽略不计(甚至可能会在重新分配的开销之后花费更长的时间)。
如果您正在计算相关矩阵,那么您将通过清零所有元素得到相同的结果。这通常是一个更简单的操作,可以为您提供大多数应用程序所需的结果。