Matlab:从矢量中选择项目



我有一个向量或矩阵,要在其中选择行。矢量可能看起来像这个

T{1} = 'A'
T{2} = 'B'
T{3} = 'A'

我想用把它从ABA降到AA

T([ 1 0 1])

但如果我做,它不会编译

T([ 1 2 3]) 

我拿到了原件。然而,我使用类似的strfind函数来选择行

indexlistM = cell2mat(strfind(T, 'A')) = [1 0 1];

如何使用真/假选择器或使用其他方法选择行?

运行此时出现的错误

T([1 0 1])

是相当描述性的

下标索引必须是实正整数或逻辑。

您提供了一个非正整数(0(,它不是逻辑(false(。

你可以做

T( [true false true] ); % = T( logical([1 0 1]) )

MATLAB有时会混淆逻辑数组的类型(这可能会使其混淆(,因为它更容易以数字格式显示和读取逻辑,但要使用逻辑索引,您需要数组是实际的逻辑类型,而不是双

[true false true]
ans =
1×3 logical array
1   0   1

或者使用索引

T( [1 3] )

如何提供逻辑数组或索引的想法已经得到了解答。在这里,我想用代码示例来演示解决方案:

contains(T, 'A')
ans =
1×3 logical array
1   0   1

或使用具有find的索引

find(contains(T, 'A'))
ans =
1     3

在这两种情况下,结果都是

1×2 cell array
{'A'}    {'A'}

最新更新