startup.m 中的变量声明在 MATLAB 中不起作用
Variable declaration in startup.m not working in MATLAB
我正在尝试声明一些我需要在每个脚本中访问的幻数常量。我在 my_path
中创建了一个文件 load_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
但是当我尝试在命令 Window:
中访问 magic_number
时
Undefined function or variable 'magic_number'.
直接在startup.m
中声明变量也不行。如何解决这个问题?
这是正常行为,startup.m
是一个函数,函数内部声明的变量是该函数的 local(然后在超出范围时消失) :
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
值不仅对脚本可见,而且对函数也可见,最好创建一个 magic_number.m
函数并将其添加到您的路径中:
function [v] = magic_number()
%[
v = 10;
%]
可以在没有括号的情况下调用(即就像变量的语法一样)
我正在尝试声明一些我需要在每个脚本中访问的幻数常量。我在 my_path
中创建了一个文件 load_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
但是当我尝试在命令 Window:
中访问magic_number
时
Undefined function or variable 'magic_number'.
直接在startup.m
中声明变量也不行。如何解决这个问题?
这是正常行为,startup.m
是一个函数,函数内部声明的变量是该函数的 local(然后在超出范围时消失) :
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
值不仅对脚本可见,而且对函数也可见,最好创建一个 magic_number.m
函数并将其添加到您的路径中:
function [v] = magic_number()
%[
v = 10;
%]
可以在没有括号的情况下调用(即就像变量的语法一样)