【问题标题】:Tuple structure equivalent in MatlabMatlab中等效的元组结构
【发布时间】:2013-12-04 14:36:30
【问题描述】:

在 Haskell 中,有一种称为“元组”的结构,它允许两个元素配对在一起(即:(1,2)、('A'、'B') 等)

我想知道 Matlab 中是否有类似的东西,以便我可以匹配元素,然后以类似于“如果元素 X 与 Y 匹配,则......否则......”的方式查询 matlab

谢谢!

【问题讨论】:

  • 根据您处理的数据类型,您可能需要使用structscells
  • 有点像字典/地图?

标签: matlab haskell tuples


【解决方案1】:

我在 MATLAB 中所知道的最重要的事情是使用 map 对象。它们非常易于使用。您可以按如下方式创建一个

someMap = containers.Map();

添加新密钥也很容易

someMap('someKey') = 'someValue';

默认情况下,密钥需要是字符串,但可以编辑。您还可以通过调用检查密钥是否已存在

someMap.isKey('someKey')

只需调用即可访问值

someMap('someKey')

这应该模仿您正在寻找的行为。您始终可以通过查看文档来阅读更多内容。 containers.Map

【讨论】:

    【解决方案2】:

    一个简单的cell array 或许可以为您解决问题:

    C = {1, 2; 'A' 'B'}
    

    您现在可以轻松地对其进行测试,例如:

    strcmp(C, 'A')
    

    【讨论】:

    • 唯一的问题是它实际上不允许单个结果匹配。比较将返回一个完整的 1 和 0 向量,这需要一些额外的处理。
    • @MZimmerman6 将您的值与单个元素进行比较并不难,例如C{1,:}==2。或查找索引号:[C{1,2}]==2.
    • 我知道,我从来没有说过。我只是说 strcmp 将返回一个向量。你当然可以,就像我说的那样需要更多的处理。正如我所建议的那样,地图的优点是它是恒定时间访问,并不需要额外的处理
    猜你喜欢
    • 2018-10-25
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多