【问题标题】:How can I perform a union with two single-field Matlab structs如何使用两个单字段 Matlab 结构执行联合
【发布时间】:2016-11-26 18:19:36
【问题描述】:

我目前有两个列出图像名称的单字段 Matlab 结构。我想将它们组合成一个没有重复的结构 - 即

a(1).img = 'aa.jpg'
a(2).img = 'bb.jpg'

b(1).img = 'bb.jpg'
b(2).img = 'cc.jpg'

我希望 ab 有值:

ab(1) = 'aa.jpg'
ab(2) = 'bb.jpg'
ab(3) = 'cc.jpg'

有没有一种非暴力的方式来做到这一点?

【问题讨论】:

    标签: matlab struct matlab-struct


    【解决方案1】:

    您可以使用逗号分隔列表和unique 连接每个结构的值,以获得唯一值。然后,将此传递给struct 函数将创建一个包含值的structs 数组。

    S = struct('img', unique({a.img, b.img}, 'stable'))
    

    如果您实际上并不需要一个结构,而只需要一个包含唯一值的元胞数组,则可以消除对 struct 的最终调用。

    unique({a.img, b.img}, 'stable')
    

    【讨论】:

    • @LuisMendo 是的,应该也可以。可能有点干净
    • 我其实刚用过:unique({a(:).img, b(:).img})
    • @user1245262 在这种情况下,(:) 是不必要的
    • @Suever - 谢谢。 'stable' 参数有什么作用?
    • @user1245262 默认情况下,unique 将对值进行排序。 'stable' 确保它们保持最初出现的顺序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2018-07-22
    • 2016-02-02
    • 1970-01-01
    相关资源
    最近更新 更多