Struct 中的字符串比较 (Matlab)

问题描述 投票:0回答:3

我需要搜索一个大结构体并找到所有同名组件的索引。

例如:如果名称是 13hy 我需要返回一个数组 [1,5]

 structure(1,1).name = '13hy'
 structure(2,1).name = '64hy'
 structure(3,1).name = '37hy'
 structure(4,1).name = '07hy'
 structure(5,1).name = '13hy'

我已经尝试过:

 strcmp(structure.name,'13hy')
 ismember(structure.name,'13hy')
 strfind(structure.name,'13hy')

并且我不断收到错误“输入参数太多”。 请帮忙

string matlab struct
3个回答
3
投票

使用

arrayfun
遍历结构,使用基于
strcmp
匿名函数 来测试所需的名称:

find(arrayfun(@(n) strcmp(structure(n).name, '13hy'), 1:numel(structure)))

0
投票

使用[]:
strcmp([结构.名称],'13hy')

它链接内容并允许您像通常的变量一样压缩和使用结构。

享受吧!


0
投票

实际上,[] 不起作用,因为它确实将所有字符串值链接到另一个。您需要使用 {} (strcmp({struct.name},'13hy'))

© www.soinside.com 2019 - 2024. All rights reserved.