gpt4 book ai didi

matlab - 在Matlab中查找表中上一行的索引

转载 作者:行者123 更新时间:2023-12-02 00:38:16 29 4
gpt4 key购买 nike

如果我在 Matlab 中有下表:

T = table(['KAT';'MAT';'PAT';'SAT';'RAT'],[38;43;38;40;49],[71;69;64;67;64],[176;163;131;133;119])


T =

5×4 table

Var1 Var2 Var3 Var4
____ ____ ____ ____

KAT 38 71 176
MAT 43 69 163
PAT 38 64 131
SAT 40 67 133
RAT 49 64 119

我如何引用 PAT 上方的整行。

例如,以下代码查找与 PAT 匹配的行

>> T((ismember(T.Var1,'PAT','rows')),:)

ans =

1×4 table

Var1 Var2 Var3 Var4
____ ____ ____ ____

PAT 38 64 131

但是当我在索引中扣除 1 以查找“PAT”匹配行上方的行时,出现以下错误:

>> T((ismember(T.Var1,'PAT','rows')-1),:)
Index in position 1 is invalid. Array
indices must be positive integers or logical
values.

有什么方法可以找到与“PAT”匹配的行上方的行吗??

最佳答案

ismember 的输出是一个向量 [0 0 1 0 0]'。如果从中减去 1,则会得到 [-1 -1 0 -1 -1]',这不是有效的索引。一个简单的解决方案是使用 find,然后减去 1。

T((find(ismember(T.Var1, 'PAT', 'rows'))-1), :)

ans =

Var1 Var2 Var3 Var4

____ ____ ____ ____

MAT 43 69 163

find 返回非零元素的索引。

另一种选择是使用 circshift 移动向量中的元素。

T(circshift(ismember(T.Var1, 'PAT', 'rows'),-1), :)

ans =

Var1 Var2 Var3 Var4
____ ____ ____ ____

MAT 43 69 163

关于matlab - 在Matlab中查找表中上一行的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52390047/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com