场景:
对于信号处理分析,我正在从其他人那里接收数据。如果我有多个数据文件,每个数据文件代表一段时间,我的标准做法是将数据向量命名为 'data'
和时间向量'time'
并且不区分每个变量名称,因为它们是由文件隔离的。如果我需要将它们个性化,我会在调用它们的程序中进行。
但是,我从某人那里收到了将它们个性化的数据,因此每个变量都有唯一的命名,'data10'
, 'data11'
.
我的所有例程和程序都调用 'data'
。有没有办法从 'dataxx'
更改这些变量名称至'data'
不使用eval
?我的第一个想法是尝试 allocatein 函数,但它不接受 'value'
的通配符参数。输入。每次我在其自己的结构中单独加载一个文件时,因此使用通配符永远不会有问题,总是只有一个以 'data...'
开头的文件。
谢谢!
最佳答案
如果您要从 .mat
文件加载这些变量,则可以使用带有输出的 load
命令:
collectedData = load('dataVariables.mat');
collectedData
对于 .mat
文件中包含的每个变量都有一个字段。如果您现在想要访问变量data10
,您可以使用动态字段名称来访问它:
collectedData.(sprintf('data%i',10))
值得注意的是,如果您想将函数应用于结构的每个字段而不循环遍历字段名称,则 structfun 会非常有用。
关于matlab - 在 MATLAB 中将通配符变量名称分配给确定的变量名称(无需 eval),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12166168/