具有多个变量的项目

时间:2013-10-16 15:01:26

标签: matlab variables structure

我想知道当你有多个变量时如何在matlab中处理变量声明。您是否创建了包含变量的单独.m文件?你把它们放在一个结构中吗?什么是最佳做法?

3 个答案:

答案 0 :(得分:1)

我猜你在许多不同的脚本/函数中使用了一些常量,你不想将它们作为函数的输入(太多,并且它们是常量)。

我建议您在运行函数时调用的单独m文件中使用它。作为:

%% Initialize variables:
import_vars;

%% Initialize variables from function:
[a, b, c, d] = import_vars();

在后者中,当在不同的函数中使用时,您可以为变量指定不同的名称。这样可以降低覆盖变量的风险(感谢Floris)。

后者经常用于我之前使用的程序中。

答案 1 :(得分:1)

您当然可以使用struct来保持变量的组织并进行紧凑的初始化。但是如果你想保留松散的变量,并且你只是在寻找一种初始化变量的超紧凑方法,那么看看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]
>> 

显然,可读性受到很大影响,但你可以拥有任意数量的输入/输出参数,它们可以是任何数据类型。

答案 2 :(得分:1)

我可以想到一些情况,较低的数字可能更有效,但最高的数字预计是最安全的:

<强> 1。你有很多变数,有时需要所有变量

建议的解决方案:保存在mat文件中

当你需要一个时,只需执行一个短命令来加载所有这些

<强> 2。你有很多变数,通常只需要一些变量

建议的解决方案:保存在mat文件,数据库,文本文件或基本上任何地方

如果需要,只需执行一个简短的命令,只加载

中的相关变量

第3。你有很多变数,而且往往需要很多变量

建议的解决方案:合并到struct并保存在mat文件中

由于您只加载结构,因此可以最大限度地降低覆盖现有变量的风险。只需确保使用结构名称熟悉自己,并且不要将其用于其他事情。每次需要使用变量时,您当然都需要将structname添加为前缀。

<强> 4。你有一些变量,通常需要很多变量

建议的解决方案:为他们创建一个函数(或类)

如果您确定这是默认路径,这是最安全的方法。如果存在变量,它将使用该变量,否则它将尝试执行您的普通函数。

请注意,您可以在一个M文件中声明多个函数。