2012-04-02 3 views
9

실험용 데이터를 scicoslab에 삽입해야합니다. (매우 잘못 설계된) 의 scilab 복제본은 그래픽 모델링을 지원합니다. 웹상의 문서는 꽤 좋지 않지만, scilab옥타브과 비슷합니다.문자열 이름으로 변수 액세스

처리해야하는 데이터는 특정 숫자의 텍스트 파일에 포함되어 있습니다. Data_005, Data_010, ..., Data_100. 각 명령은 loadmatfile 명령에 --ascii 플래그를 사용하여로드 할 수 있습니다.

loadmatfile("foo", "-ascii")foo.mat 파일을 foo이라는 변수에로드하기 때문에 문제가 발생합니다. 내가 무엇을 검색하는 것은 나 문자열 내부 심볼 테이블에 액세스 할 수 있도록 해주는 내장 read_var_from_name입니다

for i = [5:5:100] 
    name = sprintf("Data_%02d", i); 
    loadmatfile(name, "-ascii"); 
    x = read_var_from_name(name); 
    do_something(x); 
end 

: 데이터 파일에 대한주기 위해, 내가 좋아하는 뭔가를 할 필요가있다.

비슷한 기능이 있는지 알고 계십니까?

주 : 파일이 아스키 형식 인 경우이 동작을 오버라이드 (override) 할 방법이 없습니다

  1. ;
  2. 같은 단계에서 작동하지만이 단계에서는 옥타브 (그래픽 모델링이 필요 없음)를 사용할 수도 있습니다.

답변

9
>> foo = 3.14; name = 'foo'; eval(name) 

foo = 

    3.1400 

MATLAB에서 위의 작품과 Scilab의 문서는 또한 eval 기능을 가지고 말한다. 내가 너를 올바르게 이해했는지 모르겠다.

+0

옥타브에서 작동 확인 및 – Dacav

9

@ arne.b는 좋은 답변입니다. 귀하의 경우에는

당신은 또한 MATLAB에서 그렇게 할 수 있습니다

a=load('filename.mat') 
x=a.('variable_name') 
+1

그냥() 여기서 '평가 프로그래밍 배경에서 사람으로 (말하고 싶었다 scicoslab'악으로 간주됩니다) 이것을 지적 해 주셔서 감사합니다; 나는이 구문이 존재한다는 것을 전혀 몰랐다! – miken32

+0

@ miken32'eval'은 실제로 악합니다. – Oli

관련 문제