在达到某个值之前而不是在 struct field matlab 中之后重新编码值

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

我有一个名为“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 中执行此操作。

任何提示,我们将不胜感激!

matlab
1个回答
0
投票

我放弃了尝试编写无循环答案,因为我无法弄清楚如何分配回结构数组的特定元素(欢迎回答!)。

我会用:

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
的第一个非零元素的索引。

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