2014-03-03 1 views
0

Matlab에서 다차원 스케일링을 사용하려고합니다. 목표는 유사도 행렬을 산점도로 변환하여 k- 평균을 사용하는 것입니다.다차원 스케일링 행렬 오류

London Stockholm Lisboa Madrid Paris Amsterdam Berlin Prague Rome Dublin 
0  569   667  530  141  140   357  396  570  190 
569  0   1212 1043 617  446   325  423  787  648 
667  1212  0  201  596  768   923  882  714  714 
530  1043  201  0  431  608   740  690  516  622 
141  617   596  431  0  177   340  337  436  320 
140  446   768  608  177  0   218  272  519  302 
357  325   923  740  340  218   0  114  472  514 
396  423   882  690  337  272   114  0  364  573 
569  787   714  516  436  519   472  364  0  755 
190  648   714  622  320  302   514  573  755  0 

내가 책 현대 다차원 스케일링 (보그 & Groenen, 2005)에서이 데이터 집합을 가지고 :

나는 다음 테스트 세트를 가지고있다. PROXSCAL MDS 방법을 사용하여 SPSS에서 테스트했으며이 책에 언급 된 것과 동일한 결과를 얻습니다.

하지만 프로세스 속도를 높이려면 Matlab에서 MDS를 사용해야합니다. 사이트의 자습서 : http://www.mathworks.nl/help/stats/multidimensional-scaling.html#briu08r-4은 내가 위에서 사용하고있는 것과 같습니다. 위에 표시된 것과 같이 데이터 세트를 변경하고 코드를 실행하면 다음과 같은 오류가 발생합니다 : "유효하지 않은 차이 또는 거리 행렬이 아닙니다.".

내가 뭘 잘못하고 있는지, 그리고 고전적인 MDS가 올바른 선택인지 잘 모르겠습니다. 나는 또한 결과를 3 차원으로 원한다고 말할 수있는 가능성을 놓친다 (이것은 나중에 단계에서 필요할 것이다).

답변

0

매트릭스가 일치하지 않으므로 인덱스 (9,1)(1,9)을 확인하십시오. 비대칭 색인을 빨리 찾으려면 [x,y]=find(~(D'==D))

+0

내가 어리 석고 ... 도움말 파일에서 나는 cmdscale 대신에 3 차원 만 얻으려면 mdscale이 필요하다는 것을 알았습니다. 답변 해주셔서 감사합니다. – Pakspul