我想知道当您有多个变量时如何处理 matlab 中的变量声明。您是否创建了一个包含变量的单独 .m 文件?你把它们放在一个结构中吗?最佳做法是什么?
3 回答
我猜你有一些你在许多不同的脚本/函数中使用的常量,你不想作为函数的输入(太多了,而且它们是常量)。
我建议你将它放在一个单独的 m 文件中,当你运行你的函数时调用它。或者作为:
%% Initialize variables:
import_vars;
或者
%% Initialize variables from function:
[a, b, c, d] = import_vars();
在后者中,当在不同的函数中使用时,您可以为变量赋予不同的名称。这样可以降低覆盖变量的风险(感谢 Floris)。
后者在我之前使用的程序中经常使用。
您当然可以使用 astruct
来组织变量并进行紧凑的初始化。但是,如果您想保留松散的变量,并且您只是在寻找一种超级紧凑的初始化变量的方法,请查看deal
. 这是一个人为的例子来展示它的多功能性:
>> [A,B,C,D,E] = deal(2,'x',struct([]),[],rand(2),{'str',123})
A =
2
B =
x
C =
0x0 struct array with no fields.
D =
[]
E =
0.8147 0.1270
0.9058 0.9134
F =
'str' [123]
>>
显然,可读性受到很大影响,但您可以有任意数量的输入/输出参数,并且它们可以是任何数据类型。
我可以想到几种情况,较低的数字可能更有效,但最高的数字预计是最安全的:
1.你有很多变量,有时需要所有变量
建议的解决方案:保存在mat文件中
当您需要一个时,只需执行一个简短的命令即可加载所有这些
2. 你有很多变量,而且经常只需要其中的几个
建议的解决方案:保存在 mat 文件、数据库、文本文件或基本上任何地方
当你需要一个时,只需执行一个简短的命令来只加载相关的变量
3. 你有很多变数,而且经常需要很多变数
建议的解决方案:组合成结构并保存在mat文件中
由于您只在结构中加载,因此可以最大限度地降低覆盖现有变量的风险。只需确保熟悉结构名称并记住不要将其用于其他用途。每次您需要使用变量时,您当然需要添加 structname 作为前缀。
4. 你有一些变量,而且经常需要很多变量
建议的解决方案:为他们创建一个函数(或类)
如果您确保这是在您的默认路径上,这是最安全的方式。如果变量存在,它将使用该变量,否则它将尝试执行您的琐碎函数。
请注意,您可以在一个 M 文件中声明多个函数。