具有多个变量的项目

Posted

技术标签:

【中文标题】具有多个变量的项目【英文标题】:Project with multiple variables 【发布时间】:2013-10-16 15:01:26 【问题描述】:

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

【问题讨论】:

您不需要声明变量 - 只需使用它们。如果你想记录它们代表什么,你可以考虑写一个标题。你的意思是你有常量吗? 您可以查看this earlier answer,了解使用classdef 作为一种干净地存储常量的方法。 你打算如何使用要存储的变量? @DennisJaheruddin 主要是从基础工作区使用它们。 【参考方案1】:

我能想到几种情况,较低的数字可能更有效,但最高的数字应该是最安全的:

1.你有很多变量,有时需要所有变量

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

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

2。你有很多变量,而且通常只需要其中的几个

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

当你需要的时候,只需执行一个简短的命令来只加载相关的变量

3.你有很多变量,而且经常需要很多变量

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

由于您只在结构中加载,您可以最大限度地降低覆盖现有变量的风险。只需确保熟悉结构名称并记住不要将其用于其他用途。每次您需要使用变量时,您当然需要添加 structname 作为前缀。

4.你有一些变量,而且经常需要很多变量

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

如果您确保这是在您的默认路径上,这是最安全的方式。如果变量存在,它将使用该变量,否则它将尝试执行您的琐碎函数。

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

【讨论】:

【参考方案2】:

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

我建议你将它放在一个单独的 m 文件中,当你运行你的函数时调用它。要么是:

%% Initialize variables:
import_vars;

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

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

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

【讨论】:

前一种方法有很大的风险会覆盖您正在使用的程序中的变量 - 至少使用您控制使用它们的程序中的变量名称的函数。我真的更喜欢类常量方法(请参阅my earlier answer - 有点罗嗦,但确保您确切知道变量是什么以及它来自哪里(它被定义的地方)。写的时候多一分钟,调试少一天.【参考方案3】:

您当然可以使用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]
>> 

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

【讨论】:

以上是关于具有多个变量的项目的主要内容,如果未能解决你的问题,请参考以下文章

具有 50 多个创建的虚拟变量的堆积条形图(百分比)? [关闭]

如何使用不同尺寸的多个分类输入变量为随机森林回归模型?

如何访问具有多个属性的 SCSS 变量

动态传递实体连接字符串 - 具有多个环境的多个实体

向 ActionScript 变量添加多个类别

为啥在具有相同变量的语句中使用多个等号?