2012-07-30 83 views
0

我試圖實現SFS算法this文件pages 11-12順序前進(SFS)算法

我有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功能的組合。我怎樣才能做到這一點?

+0

人,我會說實話。我是一個懶惰的程序員......任何時候,我看到'矩陣乘法/累加/序列或probability'我覺得直'Matlab',我甚至不嘗試在'C開始++的東西'或'Java'除非我不得不。你有沒有考慮過'Matlab'來完成你的任務?的 – cybertextron 2012-07-30 14:35:01

+0

可能重複[如果我傳遞一個值,我希望它「1」,否則,我希望它「0」。你覺得呢?(http://stackoverflow.com/questions/11713452/if-i-pass-a-value-i-want-it-1-otherwise-i-want-it-0-what-do -您認爲) – Blastfurnace 2012-07-30 14:48:29

回答

3

這並不完全清楚,我你的要求是什麼,從你的問題,但是一個普遍的答案是使用C++的線性代數庫如犰狳:

http://arma.sourceforge.net/

這會給你一個矩陣類和相關操作,以及類似於MATLAB的接口。