2013-09-05 4 views
5

작업 공간에서 행렬을 만듭니다.작업 공간에서 전역 변수로 matlab 변수 만들기

enter image description here

지금은 스크립트의 변수에 액세스 할 수 있습니다. 변수를하고 같이 (2) 4.

그러나 내부에 돌아갑니다 나는 오류

y=getvariable(2) 
    ??? Undefined function or method 'Variable' for input 
    arguments of type 'double'. 

    Error in ==> getvariable at 3 
    y=Variable(x) 

을 얻을

function y= getvariable(x) 

y=Variable(x) 
end 

같은 함수 그래서 내가 그것을 액세스 할 수 있도록 Variable 매트릭스는 글로벌 만드는 방법 어떤 기능을 통해? 당신이 당신의 기능에 사용하기 전에 당신이 당신의 작업 공간

  • 전화 global Variable에서 그것을 정의하기 전에

  • 답변

    6

    당신이 전역

    >> global Variable = rand(50,12); 
    

    를 사용할 수 있지만 ...

    function y = getvariable(x) 
    
        % Always needed 
        global Variable; 
    
        % Here ya go 
        y = Variable; 
    
    end 
    

    훨씬 더 나은 대안이 사용하기

    function x = getvariable(x) 
        % no body needed  
    end 
    

    당신이

    >> y = getvariable(Variable); 
    

    로 전역 변수에 대한 몇 가지 합법적 인 사용 사례가 있지만

    (물론,이 인위적인 예를 들어, 이것은 단지

    >> y = Variable; 
    

    와 같은 것)를 호출하는, 일반적으로 코드를 스파이시로 만드는 경향이 있으며 디버그하기가 훨씬 쉽고 버그가 발생하기 쉽습니다. 주제에 Have a read. @rody 제안으로

    +1

    나는 500 개의 다른 변수 값을 포함하는 엑셀 시트를 가지고있다. 그래서 저는 그것으로부터 행렬 변수를 만듭니다. 그리고 나서 그것을 함수에 사용합니다. 그리고이 함수를 함수 내부에 입력 할 수있는 방법은 없습니다. 여기에 전역 변수를 사용하지 않는 방법이 있습니까? _ – Moz

    +3

    @Moz : ... 그냥 행렬 변수를 인수로 함수에 전달 하시겠습니까? –

    +3

    엑셀 파일 ('xlsread' 또는 비슷하게)을 읽고 거기에서 시작하는 함수를 사용하지 않는 이유는 무엇입니까? – Nick

    3
    1. 전화 global Variable
    2. 당신이 전역으로, 함수에 변수를 전달하는 다른 방법을 생각 제안 그러나

    디버깅 중에 문제가 발생할 수 있습니다.

    +4

    을 얻을 것이다 lp/matlab/matlab_prog/share-data-between-workspaces.html – am304

    5

    은, 난 그냥 일을 명확하게하는 예를 제공하고있는 기능

    내부 매트릭스와 X를 전달합니다.

    당신은 당신이 Variable의 3 요소에 액세스하려면

    function y= getvariable(matrixname,no) 
    y=matrixname(no) 
    end 
    

    으로 기능을 변수 매트릭스의 10 번째 요소에 액세스, 그렇게 만들고 싶어, 그래서 당신은

    Y = getvariable 입력처럼 (3 변수)

    당신은 http://www.mathworks.co.uk/he 자세한 내용은 3 요소

    관련 문제