2014-05-21 3 views
1

Matlab R2013a을 사용하고 있으며 함수로 'who'함수를 사용하여 이름으로 시작하는 변수 목록을 검색하려고합니다.MATLAB의 함수에서 "Who"함수 사용

의 다음과 같이 내 작업 공간에서 변수의 목록이 있다고 가정 해 봅시다 :

  • A = 1
  • A_2 = 2
  • a_3 =

내가 이것을 실행 3 :

who('a*'); 

잘 작동합니다.

하지만이 같은 함수 내에서 같은 일을 실행하면

function someFunction() 

    who('a*'); 

end 

또는

function someFunction() 

    disp(who('a*')); 

end 

그것은하지 않습니다. 오류가없고 출력이 없습니다.

내가 지금처럼 같은 함수 내에서

myVariables.mat

라는 매트랩 파일에 그 변수를 저장하고이를 실행 한 경우 :

function someFunction() 

    who('a*','myVariables'); 

end 

그것은 여전히 ​​아무튼 일하지 마라.

범위 때문에 처음 동작하지 않을 수있는 이유를 이해할 수 있지만 'who'기능을 실행하는 파일을 지정하면 작동하지 않습니다 ... 무엇이 누락 되었습니까?

도움을 주시면 감사하겠습니다.

+0

그래 이미 장전. 내가 함수를 호출하기 전에 함수에서로드를 강제 할 수 있다는 뜻입니다. –

+0

이전에 읽지 않았다면 적어도 한 번 이상'doc who '를 읽는 것이 좋습니다. 바로 거기에서 해결책을 볼 수있었습니다. – Divakar

+1

@Divakar 기능 솔기 내에서 MATLAB 파일의로드를 강제 실행하십시오. 덕분입니다. 그러나 location 매개 변수를 사용하면 충분하다고 생각할 수 있습니다. 다시 한번 감사드립니다. 많이 감사합니다. –

답변

1

mentioned by @Daniel과 같이, 함수의 작업 영역은 기본 작업 영역과 별개입니다. 기본 작업 공간을 검사하는 당신은 m-파일 내부에 who을 사용할 수있는 두 가지 방법이 있습니다 :

  1. 대신 함수의 script를 사용하여가 (즉,function 줄을 생략하십시오. 함수와 마찬가지로 파일 이름으로 스크립트를 실행하십시오.) 스크립트는 기본 작업 공간을 공유하므로 who은 모든 변수를 볼 수 있습니다.

  2. 사용 evalin : evalin('base','who')

+0

공기를 조금 더 없애 주셔서 감사합니다. –

0


감사

Diaa 당신은 함수 내에서 변수에 액세스하려고합니다. 입력 인수와 전역 변수 만 함수 내에서 볼 수 있습니다. 다음과 같이해야합니다 :

function someFunction(a1,a2) 

    who('a*'); 

end 

동적 변수 이름을 실제로 사용하려는 경우 디자인을 변경하는 것이 좋습니다.