startup.m中的变量声明不在MATLAB中工作

startup.m中的变量声明不在MATLAB中工作,matlab,startup,Matlab,Startup,我试图声明一些我需要在每个脚本中访问的幻数常量。我在my\u path中创建了一个文件load\u constants.m,看起来像: magic_number = 10; other_magic_number = 12; 我的startup.m如下所示: % add a bunch of packages addpath ~/Documents/MATLAB/some-package userpath(my_path) load_constants 但是,当我尝试在命令窗口中访问magi

我试图声明一些我需要在每个脚本中访问的幻数常量。我在
my\u path
中创建了一个文件
load\u constants.m
,看起来像:

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
中声明变量也不起作用。如何修复此问题?

这是正常行为,
startup.m
是一个函数,函数中声明的变量是该函数的局部变量(然后在超出范围时消失):

使用该功能可使
magic_number
base
工作区可见:

function [] = startup()
%[
    assignin('base', 'magic_number', 10); % This value will be visible from 'base' workspace
%]
请注意,要使
magic_number
值不仅对脚本可见,而且对函数也可见,最好创建
magic_number.m
函数并将其添加到路径:

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

无需括号即可调用(即,与变量语法相同)

您的
startup.m
是否位于MATLAB的当前目录中?感谢您的澄清。早些时候,函数似乎过于笨拙,但我意识到这可能是最好的选择。我把它们都放在一个
Constants
文件夹中,并将其添加到我的路径中。根据用户发布的代码,它是一个脚本,而不是一个函数。
function [v] = magic_number()
%[
    v = 10;
%]