저는 C에서 프로그램을 개발하여 스파 스 매트릭스 파일을 고밀도 매트릭스로 변환하려고합니다. 필자가 읽은 바에 따르면 가장 좋은 방법은 연결된 목록을 사용하는 것이지만 필자는 이들에 대한 경험이 없으며 주제를 설명하는 좋은 온라인 리소스를 찾지 못했습니다. 나는 빠른 해결책을 찾고있는 것이 아니라 프로세스가 어떻게 작동하는지 설명 할 수있는 웹 사이트 또는 텍스트 소스를 찾고있어이 프로젝트에 적용 할 수 있습니다. 필자가 보았던 자원 중에는 매트릭스의 값 (행, 열 및 개별 값)과 벡터에 대한 두 개의 배열 (행에 대해 하나, 다른 열에 대해)을 처리하기 위해 세 개의 배열을 사용하는 것이 좋습니다. 감사!C에서 스파 스 매트릭스 변환
답변
지정한 파일 형식은 밀집한 매트릭스 용입니다. 100 개 요소가있는 10x10 행렬은 밀도가 높습니다. 희소 행렬은 n * m보다 적은 요소를 가지고 있고 "누락"요소는 모두 0으로 가정합니다.이 방법을 사용하는 지점은 거의 모든 0 인 행렬 (많은 응용 프로그램에서 발생) 공간. 그러나 조밀 한 행렬 형식을 사용하여 조밀 한 행렬을 저장하면 일반 배열보다 훨씬 더 많은 공간이 사용됩니다.
하나의 일반적인 스파 스 매트릭스 파일 형식을 MatrixMarket이라고하며, 설명 된 것과 매우 유사합니다. 첫 번째 줄에는 #, 행 수, 열 수, 0이 아닌 요소 수 (nnz
)가 있습니다. 그런 다음 세 줄 안에 실제 원소의 nnz 줄이 있습니다. (row #) (column #) (value)
스파 스 매트릭스가 비슷한 형식이면 메모리에 스파 스 매트릭스가 필요하지 않습니다. 그냥 값을 스캔하고 밀도가 높은 배열을 직접 채우십시오.
스파 스 매트릭스를 메모리에 저장하려면 저장 방법에 대한 몇 가지 옵션이 있습니다. 삼중 항이 가장 쉽고, MatrixMarket 파일의 메모리 내 버전 일뿐입니다. 3 개의 배열 또는 1 개의 구조체 배열. 선형 대수 연산의 가장 일반적인 구조는 CSC (Compressed Sparse Columns) 또는 CSR (Compressed Sparse Rows)입니다. 나는 당신이 그것을 보도록 하겠지만, C 구현물을 가지고 놀고 싶다면 Tim Davis의 CSparse을 봐야한다. 이것은 MatLAB이 희소 행렬을 저장하는 방법이기도합니다. Tim은 MatLAB의 일부분을 작성한 사람들 중 한 사람이었습니다.
연결된 목록처럼 들리지만 찾고자하는 내용이 아닐 수도 있지만 this site은 주제에 대한 포괄적 인 자습서를 제공합니다. 그것은 당신의 문제에 적합할지 여부를 밝혀주는 데 도움이 될 것입니다 ... 행운을 빌어 요!
- 1. 스파 스 매트릭스 라이브러리가 필요합니다.
- 2. 스파 스 매트릭스 svd에서 파이썬
- 3. GPU 또는 CPU의 스파 스 매트릭스 곱셈?
- 4. 스파 스 매트릭스 구현 및 Java에서의 작업
- 5. R을위한 성숙한 스파 스 매트릭스 패키지는 대부분?
- 6. 스파 스 매트릭스 생성을 병렬로 수행
- 7. Simulink/xPC에서 스파 스 매트릭스 - 벡터 곱셈을 사용할 수 있습니까?
- 8. C#에서 스토리지 최적화 스파 스 매트릭스 구현이 있습니까?
- 9. 파이썬에서 스파 스 코딩
- 10. Scipy 스파 스 매트릭스의 주소 지정 범위
- 11. R에서 명명 된 행을 사용할 때 스파 스 매트릭스 열을 다른 스파 스 매트릭스에 추가 (연결) 할 수 있습니까?
- 12. 파이썬에서 스파 스 매트릭스를 효율적으로 추가하는 방법
- 13. WinXP SP3의 스파 스 파일
- 14. Incanter는 스파 스 매트릭스를 지원합니까?
- 15. Scipy 스파 스 삼각 행렬?
- 16. 파이썬에서 스파 스 매트릭스를 지원합니까?
- 17. 스파 스 표현을 사용하는 nltk.cluster
- 18. 파일 스파 스 만드는 법?
- 19. 스파 스 값을 필터링하는 대수적인 방법 ..?
- 20. C에서 C#으로 스 니펫 변환
- 21. 파이썬의 근접 매트릭스
- 22. 연산자 오버로딩은 []과 같이 내가 C++에서 "스파 스"벡터 클래스를 만들려고 해요 스파 스 벡터
- 23. 스파 스 체크 아웃 및 svn : externals
- 24. python hcluster에서 스파 스 매트릭스를 사용하는 방법?
- 25. 스파 스 매트릭스를 저장하기위한 데이터 구조
- 26. 스파 스 비트 벡터에 대한 해싱
- 27. 스파 스 FFT 계산 속도 향상
- 28. 스파 스 매트릭스에 대한 링크 표현
- 29. SQL의 스파 스 (sparse) 내적 제품
- 30. 저장소 레이아웃과 스파 스 체크 아웃
원본 파일의 데이터 형식은 무엇입니까? –
입력 파일에는 불필요한 형식이 포함되지 않으며 일련의 필수 값으로 엄격하게 채워집니다. 행렬 파일의 처음 두 값은 행과 열의 차원으로 차원을 표시하며 나머지 값은 필요한 데이터입니다. 예를 들어, 10x10 행렬이있는 경우 처음 두 값은 10과 10이고 그 다음에 100 개의 요소가 데이터로 사용됩니다. 나는 행렬 - 벡터 곱셈을 수행 할 수 있도록 스파 스 행렬을 조밀하게 채워진 행렬로 변환해야하므로 행렬과 벡터가 모두 변환을 거쳐야합니다. – Strata
그러나, 이미 aspect가 완성되도록 곱셈 알고리즘을 설계했습니다. 처음 두 값 다음에 파일의 나머지 부분은 순서대로 값을 나열하지만 변환 후 1 차원 배열에 저장됩니다. 이 개념이 아직 나에게 매우 추상적이기 때문에 이것이 명확하지 않다면 미안합니다. – Strata