Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:将零一个索引向量更改为适当的索引向量_Matlab_Indices - Fatal编程技术网

Matlab:将零一个索引向量更改为适当的索引向量

Matlab:将零一个索引向量更改为适当的索引向量,matlab,indices,Matlab,Indices,假设一个二进制索引向量,如下所示 输入 1 1 0 0 1 0 1 1 2 3 4 5 6 7 1 2 5 7 预期输出 1 1 0 0 1 0 1 1 2 3 4 5 6 7 1 2 5 7 表示要选择的第个编号。因此,我想将1010101更改为1257,有什么简单的方法吗?解决方案是使用函数find(indicesBinary)如果您真的想使用输出对另一个向量进行索引,请直接执行 您只需将二进制向量转换为逻辑 A = [1 1 0 0 1 0 1]; %assuming i

假设一个二进制索引向量,如下所示

输入

1 1 0 0 1 0 1

1 2 3 4 5 6 7
1 2 5 7
预期输出

1 1 0 0 1 0 1

1 2 3 4 5 6 7
1 2 5 7

表示要选择的第个编号。因此,我想将
1010101
更改为
1257
,有什么简单的方法吗?

解决方案是使用函数
find(indicesBinary)

如果您真的想使用输出对另一个向量进行索引,请直接执行

您只需将二进制向量转换为
逻辑

A = [1 1 0 0 1 0 1];    %assuming its double
B = [1 2 3 4 5 6 7];

C = B( logical(A) )

C =

     1     2     5     7

我之前做过
vals=1:length(数据结构);VAL(indicesBinary)
但正在寻找更优雅的解决方案。Ofc,为什么我总是忘记这个…+1.)。请记住,如果您想使用它为另一个向量编制索引,使用find作为中间步骤实际上比直接使用indicesBinary要慢。您的意思是最好使用
vals=1:length(dataStructure);VAL(逻辑(指示二进制))
?一点也不。如果您想这样做,“查找”会更有效。但是如果您想使用VAL或IndicatiesBinary从不同的向量中选择值,直接使用IndicatiesBinary会更快b_idx=[0,1,1,0]如果你想用b_idx索引v,你可以选择v=v(b_idx)。输出为sel_v=[63,34],且为fast+。如果您想知道b_idx对应的索引(如问题中所提出的),您需要
idx=find(b_idx)。输出为idx=[2,3]。然后,你也可以做
sel_v=v(idx)获取sel_v=[63,34]。执行
find
,然后使用
idx
索引以获取[63,34]也很快,但没有直接使用
b_idx
那么快。希望能把事情弄清楚