【问题标题】:assigning a wildcard variable name to a determined variable name in MATLAB without eval在没有 eval 的情况下将通配符变量名称分配给 MATLAB 中确定的变量名称
【发布时间】:2012-08-28 19:27:27
【问题描述】:

场景:

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

但是,我从某人那里收到了数据,这些数据使它们个体化,因此每个变量都有唯一的名称,'data10''data11'

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

谢谢!

【问题讨论】:

    标签: matlab signal-processing variable-assignment


    【解决方案1】:

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

    collectedData = load('dataVariables.mat');
    

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

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

    值得注意的是,structfun 非常有用,如果您想将函数应用于结构的每个字段,而不需要遍历字段名称。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2018-08-25
    • 2012-11-04
    • 1970-01-01
    • 2014-12-28
    • 2012-07-31
    相关资源
    最近更新 更多