我有一个向量或矩阵,要在其中选择行。矢量可能看起来像这个
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'}