2013-03-29 4 views
1

C++에 대한 경험이 거의 없거나 문제가 생겨서 float 값을 포함하는 std :: vector가 문제이고 iterating을 통해 float 값을 추출하려고합니다.벡터에서 float 값 얻기

벡터의 정의 코드 같은 것입니다 : 나는 다음과 같은 방법을 사용하고

template <typename T, size_t feature_number> 
    T vector_distance(const boost::array<T, feature_number>& v1, 
        const boost::array<T, feature_number>& v2); 

    template <typename T = double, size_t feature_number=3> 
    class CLASSNAME 
    { 
    public: 
    typedef boost::array<T, feature_number> FeatureVector; 
    typedef std::vector<FeatureVector> Features; 
    ... 

: 내가 얻을

FeatureTypeDTW::Features mfcc_features_a = METHODTHATRETURNSVECTOR(); 

    for (int s = 0; s < (int) mfcc_features_a.size(); s++) 
    { 
     float MYFLOAT = mfcc_features_a[s]; 
    } 

그러나 컴파일 오류입니다 :

'boost :: array (float, 7)'에서 'float'로 실행 가능한 변환이 없습니다

변환하는 방법에 대한 힌트 ??

+0

벡터에는 부동 소수점 배열이있는 것으로 보이지 않습니다. –

답변

1

Features이고, vectorFeatureVectors이고; 후자는 boost::array<T, feature_number>의 별칭입니다.

즉, boost::array<T, feature_number>float에 할당하려고합니다. 이제 FeatureTypeDTW에 대한 템플릿 인수 Tfloat (또는 부동 소수점 숫자로 변환 할 수있는 무언가)이라고 가정하면이 작업이 가능합니다.

float MYFLOAT = mfcc_features_a[s][0]; // assigns first element of boost::array 
             // to MYFLOAT 
+0

두 번째 요소는 무엇입니까? 나에게 유용 할까? 나는 2 차원 벡터라면 그것을 고려해야한다는 것을 의미합니다. – Firdous

+0

@Firdous 어떻게 알 수 있습니까? 오류 메시지에서 배열에 7 개의 요소가있는 것처럼 보입니다. 어떤/모두가 유용 할 수도 있고 유용하지 않을 수도 있습니다. – Praetorian

+0

그냥 각 mfcc_features_a [index]가 다른 차원에 1 개의 값 또는 7 개의 값을 포함한다고 말해 주시겠습니까? 2D 배열입니까? 벡터에 대한 지식이 없다 :) – Firdous