2012-02-01 2 views
7

같은 구조의 여러 인스턴스가있는 .mat 파일이 있다고 가정 해보십시오. 각각 다른 변수 이름으로되어 있습니다..mat 파일의 변수를 다른 이름의 변수로로드

파일 (각각 whos('-file' ...을 사용하여 찾을 수 있음)에서 발견 된 각 인스턴스를 처리하려고합니다. 나는 load이 내가 충돌에 대해 걱정할 필요가 없도록 (그래서 내가 자기 수정 코드 라 eval을 쓸 필요가 없도록) 변수의 목적지 이름을 지정하게 할 것이라고 희망했다.

  1. whos에 대한 작업을 수행합니다

    이 작업을 수행하는 무력 방법은 희망 .mat 내용과 충돌하지 않는 이름으로 변수를 사용하여 같은 무언가를, 도우미 함수를 만들 것으로 보인다 포함 된 이름을 얻기위한 파일.

  2. 각 포함 된 구조를 반복로드합니다.
  3. 로드 된 구조를 셀 배열 (예 : 배열의 한 열에 .mat 파일의 구조 이름이 들어 있고 해당 열과 .mat 파일의 각 구조의 실제 내용이 들어있는)에 할당합니다.

같은 것을 달성하는 더 좋은 방법이 있습니까?

답변

8

물론 할 수 있습니다! 출력 인수가있는 load을 사용하면됩니다.

x = 1; 
save foo; 

ls = load('foo.mat'); 
ls.x 
+0

좋은의 셀 어레이를 가질 수 있습니다. 나는 '로드 구조체 배열'의 반환 값이 무엇인지 궁금해하는'load' 매뉴얼 페이지를 반복적으로 보았습니다. " 이제 알았어! – jhfrontz

4

당신은 MAT 파일의 변수가 될 것입니다 구조

ws = load('matlab.mat'); 

구조 ws의 분야에 MAT 파일의 데이터를 load 수 있습니다. 그런 다음도 구조

ws{1}=load('savedWorkSpace_1.mat'); 
ws{2}=load('savedWorkSpace_2.mat'); 

>> x = 1; 
>> save ws_1; 
>> x = 2; 
>> y = 1; 
>> save ws_2 
>> clear 
>> ws{1} = load('ws_1.mat') 
>> ws{2} = load('ws_2.mat') 
>> ws{1}.x 
    x = 1 
>> ws{2}.x 
    x = 2 
관련 문제