2016-08-29 3 views
1

모든 스크립트에서 액세스해야하는 일부 마법 번호 상수를 선언하려고합니다. 내 startup.m은 다음과 같습니다startup.m의 변수 선언이 MATLAB에서 작동하지 않습니다.

magic_number = 10; 
other_magic_number = 12; 

:처럼 보이는 my_path에서 파일 load_constants.m했다

% add a bunch of packages 
addpath ~/Documents/MATLAB/some-package 

userpath(my_path) 
load_constants 

을하지만 명령 창에서 magic_number에 액세스하려고하면

Undefined function or variable 'magic_number'. 

startup.m에 직접 변수를 선언해도 작동하지 않습니다. 이 문제를 해결하는 방법?

+0

'startup.m'은 MATLAB의 현재 디렉토리에 있습니까? –

답변

2

이것은 정상적인 행동이고, startup.m은 함수 및 변수는 기능 함수 내에 로컬이다 선언 (상기 범위의 외출시 사라지는)

function [] = startup() 
%[ 
    magic_number = 10; %% This is local variable 
%] 

사용 assignin 기능을 base 작업 공간에서 볼 수 magic_number 있습니다

function [] = startup() 
%[ 
    assignin('base', 'magic_number', 10); % This value will be visible from 'base' workspace 
%] 

참고 SC에뿐만 아니라 magic_number 값 볼 필요에 대한 ripts뿐만 아니라 기능, 그것은 magic_number.m 함수를 작성하여 경로에 추가하는 것이 좋습니다 수 있습니다

function [v] = magic_number() 
%[ 
    v = 10; 
%] 

괄호없이 호출 할 수 있습니다 (즉,

+0

설명 주셔서 감사합니다. 함수는 이전에는 너무 다루기 힘들어 보였지만 아마도 이것이 최선의 선택이라는 것을 알았습니다. 저는 모든 것을 Constants 폴더에 넣었습니다.이 폴더는 제가 만든 경로에 추가했습니다. – Kappie001

+2

사용자가 게시 한 코드에 따라 스크립트가 기능이 아닙니다. – Suever

관련 문제