【问题标题】:How to create variables with names that follow from a loop如何使用来自循环的名称创建变量
【发布时间】:2013-09-12 09:50:52
【问题描述】:

我需要将 Excel 电子表格中的某些列导入 Matlab 并将结果保存在一个数组中。

例如,假设我有一个 3x1 元胞数组,元素是 'USD''EUR''GBP' 等字符串。

如果我想从网络共享上的 3 个单独的电子表格中导入数据,并将每个电子表格中的数据分别存储在名为 'InitialUSD''InitialEUR''InitialGBP' 的数组中。

关于如何将数组名称链接到元胞数组中的值的任何指导?

【问题讨论】:

  • 如果您在获取数据方面没有问题,而只是在链接方面。考虑使用struct。然后,您可以拥有 1 个带值的字段和 1 个带相应名称的字段。在您的情况下,这意味着一个 3x1 结构,其中每个元素包含 1 个向量(或 Nx1 单元格数组)和 1 个字符串。

标签: arrays excel matlab


【解决方案1】:

你可能想要这样的东西:

currencies = {'USD' 'EUR' 'GBP' };
for index=1:length(currencies)
    assignin('caller',['Initial' currencies{index}],1:index);
end

在示例中,我将向量 (1:index) 分配给变量,但显然在您的情况下您将分配 excel 数据(可能您正在使用 xlsread 阅读)。

【讨论】:

    【解决方案2】:

    这是您要问的How can I create variables A1, A2,...,A10 in a loop? 那么,答案是不要这样做...但是您可以这样做:

    for k=1:3
       InitialUSD{k} = xlsread (%spreadsheet nb. k%);
    end
    

    假设您使用 xlsread 从 Excel 导入数据。将%spreadsheet nb. k% 替换为xlsread 函数的正确参数。

    【讨论】:

    • 您的答案中的代码似乎正在尝试将 xlsread 的返回值分配给字符串。你试过这个吗?我想你会得到一个错误。
    • 假设我不希望变量名中有任何数字。相反,我希望变量名称包含它所持有的数据的货币名称。
    • @Fayyaadh 根据您使用的 MATLAB 版本,您可以定义一个枚举类并使用它来索引您的元胞数组。有关更多详细信息和一些示例,请参阅mathworks.co.uk/help/matlab/matlab_oop/enumerations.html
    【解决方案3】:

    我认为这是一种简单的方法:

    1. 从 excel 文件中读取所有内容
    2. 将标题行中的信息与您感兴趣的信息进行比较
    3. 在此基础上,选择你想要的数据。

    这样你就可以得到一个名称列表,以及一个具有相同顺序的匹配数据的数组。

    我总是建议这样做而不是自己给变量命名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-28
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2017-11-16
      • 2019-01-24
      相关资源
      最近更新 更多