matlab - 在 MATLAB 中将通配符变量名称分配给确定的变量名称(无需 eval)

标签 matlab signal-processing variable-assignment

场景:

对于信号处理分析,我正在从其他人那里接收数据。如果我有多个数据文件,每个数据文件代表一段时间,我的标准做法是将数据向量命名为 '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/

相关文章:

algorithm - 检测风噪声

c++ - 如何使随机损失位服从高斯分布

python - x,y = y,y+x 和 x=y , y=x+y 之间有什么区别?

Matlab:从命令行运行 m 文件

Matlab停止函数的执行

algorithm - 过滤和平滑算法

java - CPP 如何在 unsigned int 值中使用 boolean 值?

C 结构体中的字符到整数

matlab - 计算 3D 点的距离矩阵

matlab - 如何正确求多项式根?