我有一个名为“x”的结构。 x 中有几个字段。其中之一称为“类型”(即 x.type)。 type 是一个字符字段。下面是 x.type 中数据的示例:
'boundary'
'E 3'
'E 5'
'E 3'
'E 5'
'E 3'
'E 5'
'E 24'
'E 40'
'E 65'
'boundary'
'E 48'
'E132'
'E 48'
'E132'
'E 48'
'E130'
'E 48'
'E130'
我想将“E 48”之前的所有值重命名为“E999”,并将“E 48”之后的值保留为“边界”。
我主要是 R 用户,所以不太确定如何在 Matlab 中执行此操作。
任何提示,我们将不胜感激!
我放弃了尝试编写无循环答案,因为我无法弄清楚如何分配回结构数组的特定元素(欢迎回答!)。
我会用:
LastToReplace = find(strcmp({x.type}, 'E 48'), 1) - 1;
for ele = 1:LastToReplace
if ~strcmp(x(ele).type, 'boundary')
x(ele).type = 'E999';
end
end
语法
{x.type}
将 struct type
元素的 x
字段的内容作为元胞数组返回。 strcmp
带有元胞数组和字符向量,返回一个逻辑向量,记录每个元胞元素是否匹配;并且 find(A, 1)
返回 A
的第一个非零元素的索引。