2016-08-29 2 views
1

Я пытаюсь объявить некоторые магические числовые константы, которые мне нужно получить в каждом скрипте. Я сделал файл load_constants.m в my_path, который выглядит как:Объявление переменной в startup.m не работает в MATLAB

magic_number = 10; 
other_magic_number = 12; 

Мои startup.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 функцию, чтобы имеют magic_number быть видны из base рабочей области:

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

Следует отметить, что за то, что значение magic_number видна не только подкожно ripts но функции также, возможно, лучше создать magic_number.m функцию и добавить его в свой путь:

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

, который можно назвать без скобок (т.е. как и синтаксис для переменных)

+0

Спасибо за разъяснение. Раньше функции казались слишком громоздкими, но я понял, что это, вероятно, лучшие варианты. Я поместил их все в папку 'Constants', которую я добавил на свой путь. – Kappie001

+2

Основываясь на коде, опубликованном пользователем, это скрипт не является функцией. – Suever