2012-05-09 1 views
2

최근 MATLAB 개정판을 2007a에서 2012a로 업데이트했으며 R2007a의 일부 코드에서 문제가 발생했습니다. R2007a에서이 코드를 실행dir ('./ folder')에 의해 반환 된 Matlab 구조 조작

X = dir('./folder'); 
p = X(:).name; 

, p는 R2012a의 페이지에서 그러나 해당 폴더에있는 모든 파일 이름을 포함 단지의 이름을 포함 : 특히 dir('./folder')

예에 의해 반환되는 파일 이름의 구조에 관하여 X.names의 첫 번째 파일. 나는 또한 시도 :

p = X.name; 

p = X(:,1).name; 

는 모두 파일 이름의 원하는 목록을 생성하지 않습니다.

누구든지이 문제가 발생 했습니까? 누군가가 올바른 방향으로 나를 가리킬 수 있을까요? 감사!

+3

,하지만 난 의심'P = {X.name}'는'p {'}가'i' 경로가되도록'p'를 셀 배열로 변환합니다. –

+0

@ mathematical.coffee : 당신이 똑같은 생각을하는 것을 봅니다. 예, 작동합니다. – Jonas

답변

6

나는 R2007a가 그 일을 할 수 있었음에 놀랐습니다. 어쨌든, 무엇을 항상 근무하고하는 것은 셀 어레이에 사슬로 잇다하는 것입니다 : 나는 테스트 나 R2012이없는 (단지 옥타브를하고 나는 그것이 에뮬레이트 버전을 모르겠어요)

p = {X.name}; 
+0

위대한 작품! 하지만 X.name이 아직 셀 배열로 간주되지 않은 이유를 모르겠습니다. 나는 구문이 그런 식으로 작동한다는 것을 인정할 수 있지만 괄호가 필요한 특별한 이유가 있습니까? X.name이 셀 배열이면 어떤 정보를 추가합니까? – GPSmaster

+0

@GPSmaster :'X'는 구조체의 배열입니다.'X (i) .name'은 문자열이며 셀 배열이 아닙니다. 'X.name'은'{X (1) .name, X (2) .name, '등}을 작성한 것처럼 중괄호로 묶인 여러 출력 인수를 반환합니다. – Jonas

+0

예를 들어, class() 함수 모든 객체에서 작동하지만 X.name의 경우 X.name이 대괄호로 묶인 경우에만 "셀"을 반환합니다. 그렇지 않으면 오류를 리턴합니다. – GPSmaster

관련 문제