顺序前向选择(SFS)算法

时间:2012-07-30 13:46:29

标签: c++ algorithm function vector struct

我正在尝试实施this文档的SFS算法pages 11-12

到目前为止我在C++中的内容如下:

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;

struct Features
{
    int m_f1;
    int m_f2;
    int m_f3;
    int m_f4;

    Features(int a, int b, int c, int d) :
        m_f1(a),
        m_f2(b),
        m_f3(c),
        m_f4(d)
    {

    }
};

int criterionFunction(Features const& features)
{
    return -2 * features.m_f1 * features.m_f2 +
            3 * features.m_f3 + 
            5 * features.m_f4 +
           -2 * features.m_f1 * features.m_f2 * features.m_f3 + 
            7 * features.m_f3 +
            4 * features.m_f4 +
           -2 * features.m_f1 * features.m_f2 * features.m_f3 * features.m_f4;
}

int main(){

    Features feature,
    vector<Features> listOfFeatures(4);

    listOfFeatures.push_back(Features(1,0,0,0));
    listOfFeatures.push_back(Features(0,1,0,0));
    listOfFeatures.push_back(Features(0,0,1,0));
    listOfFeatures.push_back(Features(0,0,0,1));

    vector<int> listOfCriterion;

}

我的问题是:

- 调用criterionFunction()的方式是什么,以便传递哪个特征(即; m_f1)将取值1而哪些未传递将具有该值0

- 在这里,我想选择(我的输出)最佳three功能的组合。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

我不完全清楚你的问题是什么,但一般的答案是使用C ++线性代数库,如Armadillo:

http://arma.sourceforge.net/

这将为您提供矩阵类和相关操作,并具有与MATLAB类似的接口。