웹을 검색했지만 답변을 찾을 수 없습니다. 인덱스가 0이 아닌 값에서 시작하도록 행렬에서 기본 인덱스를 설정하는 방법은 무엇입니까? 예를 들면 :ublas 행렬에 기본 인덱스를 설정하는 방법은 무엇입니까?
A(-3:1) // Matlab/fortran equivalent
A.reindex(-3); // boost multi-array equivalent
감사
웹을 검색했지만 답변을 찾을 수 없습니다. 인덱스가 0이 아닌 값에서 시작하도록 행렬에서 기본 인덱스를 설정하는 방법은 무엇입니까? 예를 들면 :ublas 행렬에 기본 인덱스를 설정하는 방법은 무엇입니까?
A(-3:1) // Matlab/fortran equivalent
A.reindex(-3); // boost multi-array equivalent
감사
검색에서 올바른 것으로 보인다; 그러한 기능을 갖고 있지 않은 것처럼 보입니다.
이 기능이 정말로 필요한 경우 매트릭스를 서브 클래 싱하고 연산자()를 재정 의하여 색인을 작성하도록 고려할 수 있습니다. 예를 들어 최근에
using namespace boost::numeric::ublas;
template<typename T>
class Reindexable : public matrix<T>
{
public:
Reindexable() : m_offset(0) {}
void reindex(int offset) { m_offset = offset; }
T& operator()(int i) { return matrix<T>::operator()(i + m_offset); }
/* Probably more implementation needed here ... */
private:
int m_offset;
}
내가 VB.NET에서 봤는데 프로그래밍 (! ughh) 및 C#, 그래서 난 내 C++ 구문에 약간 녹슨이야 아마 위의 몇 가지 실수를했지만, 일반적인 아이디어가 효과가있다. 다시 인덱스 연산을 제공하고 괄호 연산자를 재정의하여 새 인덱스 오프셋을 인식 할 수 있도록 행렬을 서브 클래 싱합니다. 물론 실제 구현에서는 매트릭스의 각 차원에 대한 오프셋이 필요합니다.
Reindexable
에 대한 참조 또는 포인터가 있고 참조/포인터의 유형이 matrix<T>
인 경우 이전 색인 연산자를 사용하므로주의해야합니다.
부스트 :: 숫자 :: 누벨 :: 매트릭스 –
Anycorn