在Matlab中的函数之间共享"很多"变量

MeS*_*S83 4 matlab parameter-passing

在Matlab中我有几个存储在矩阵中的数据库记录DataMatrix.矩阵的每一行都是一条记录,每列都是记录属性的值.为了使程序易于理解,DataMatrix我定义了一个变量名称,用于解释与列关联的属性,即:

ColApple = 1;
ColOrange = 2;
ColLemon = 3;
...
Run Code Online (Sandbox Code Playgroud)

我有关于50列的名称.

我的问题是,in in DataMatrix用于不同的函数,我想总是使用列名来处理数据DataMatrix.所以,我有不同的功能,两个数值之间的共享ColApple,ColOrange,ColLemon,...

到目前为止,我想到了两种可能的方法:

  1. 使列名称为全局
  2. 定义一个函数,返回列名的值,即:

    [ColApple, ColOrange, ColLemon, ... ] = getColNames

我会避免使用全局解决方案,因为我认为它很危险,也因为我希望列名称在可能的情况下保持不变.第二种方法更好,但由于我有50列,我不知道是否有一个函数返回50不同的值是一个好主意(在我看来也很难维护).

任何人都有更强大或可维护的方法来解决这个问题?我相信我不是第一个处理这个问题的人,但我无法找到解决方案.

hba*_*rts 7

这非常适合容器地图.容器映射允许创建字典.例如

fruits = containers.Map({'Apple', 'Orange', 'Lemon'}, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

将创建字典

'Apple'   ->   1
'Orange'  ->   2
'Lemon'   ->   3
Run Code Online (Sandbox Code Playgroud)

你可以找到所需的列号

>> fruits('Orange')

ans =

     2
Run Code Online (Sandbox Code Playgroud)