在没有eval的MATLAB中将通配符变量名称分配给确定的变量名称

时间:2012-08-28 19:27:27

标签: matlab signal-processing variable-assignment

情景:

对于信号处理分析,我正在接收来自其他人的数据。我的标准做法是,如果我有几个数据文件,每个数据文件代表一大块时间,就是将数据向量命名为'data'和时间向量'time',而不是将每个变量名称个别化,因为它们是由文件隔离的。如果我需要对它们进行个性化,我会在调用它们的程序中进行。

但是,我收到了个人的数据,因此每个变量的名称都是'data10''data11'

我的所有惯例和程序都会调用'data'。有没有办法在不使用'dataxx'的情况下将这些变量名称从'data'更改为eval?我的第一个想法是尝试assignin函数,但它不接受'value'输入的通配符参数。每次我在自己的结构中单独加载文件时,使用通配卡永远不会有问题,因此只能是一个以'data...'开头的文件

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您从.mat - 文件加载这些变量,则可以使用带有输出的load命令:

collectedData = load('dataVariables.mat');

collectedData.mat - 文件中包含的每个变量都有一个字段。如果您现在想要访问变量data10,可以使用动态字段名称来访问它:

collectedData.(sprintf('data%i',10))

值得注意的是,如果要将函数应用于结构的每个字段而不跨字段名称进行循环,则structfun非常有用。