如何在Matlab中使用两个单字段结构体进行合并?

3

我目前有两个单字段的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'

有没有一种非蛮力的方法来做这件事?
1个回答

3
你可以使用逗号分隔的列表将每个结构体中的值连接起来,然后加上 "unique" 以获取唯一的值。然后,将此传递给 "struct" 函数会创建一个包含这些值的结构体数组。
S = struct('img', unique({a.img, b.img}, 'stable'))

如果你只需要一个唯一值的单元数组,而不是实际需要一个结构体,那么可以省略最后调用 struct 的步骤。

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

@LuisMendo 是的,那也可以。可能会更加简洁。 - Suever
我实际上只是使用了:unique({a(:).img, b(:).img}) - user1245262
@user1245262 在这种情况下,(:) 是不必要的。 - Suever
@Suever - 谢谢。'stable'参数是做什么用的? - user1245262
2
默认情况下,unique 会对值进行排序。 'stable' 可以确保它们保持最初出现的顺序。 - Suever

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接