情景:
对于信号处理分析,我正在接收来自其他人的数据。我的标准做法是,如果我有几个数据文件,每个数据文件代表一大块时间,就是将数据向量命名为'data'
和时间向量'time'
,而不是将每个变量名称个别化,因为它们是由文件隔离的。如果我需要对它们进行个性化,我会在调用它们的程序中进行。
但是,我收到了个人的数据,因此每个变量的名称都是'data10'
,'data11'
。
我的所有惯例和程序都会调用'data'
。有没有办法在不使用'dataxx'
的情况下将这些变量名称从'data'
更改为eval
?我的第一个想法是尝试assignin函数,但它不接受'value'
输入的通配符参数。每次我在自己的结构中单独加载文件时,使用通配卡永远不会有问题,因此只能是一个以'data...'
开头的文件
谢谢!
答案 0 :(得分:2)
如果您从.mat
- 文件加载这些变量,则可以使用带有输出的load
命令:
collectedData = load('dataVariables.mat');
collectedData
为.mat
- 文件中包含的每个变量都有一个字段。如果您现在想要访问变量data10
,可以使用动态字段名称来访问它:
collectedData.(sprintf('data%i',10))
值得注意的是,如果要将函数应用于结构的每个字段而不跨字段名称进行循环,则structfun
非常有用。