我试图声明我需要在每个脚本中访问的一些幻数常量。我在load_constants.m
中创建了一个my_path
文件,其内容如下:
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 :(得分:2)
这是正常的行为,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;
%]
可以在没有括号的情况下调用(即就像变量的语法一样)