Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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
Arrays 在matlab中消除部分阵列_Arrays_Matlab_Matrix_Matrix Indexing - Fatal编程技术网

Arrays 在matlab中消除部分阵列

Arrays 在matlab中消除部分阵列,arrays,matlab,matrix,matrix-indexing,Arrays,Matlab,Matrix,Matrix Indexing,假设我们有一个100*4的数组 我们还有一个由1和0组成的100*1数组。假设有n1个 我们希望从100*4数组中创建一个n*4数组,其中只包括第二个数组为1的列 一种方法是通过双for循环。有没有更简单的方法 所以,我们有 A = [ [ 332 44 33 22 33 55 33 211 ..... [ 823 44 12 98 19 23 32 911 ..... .... .... ] 及 我们想要 C = [ [ 332 22 ...

假设我们有一个100*4的数组

我们还有一个由1和0组成的100*1数组。假设有n1个

我们希望从100*4数组中创建一个n*4数组,其中只包括第二个数组为1的列

一种方法是通过双for循环。有没有更简单的方法

所以,我们有

A = [ [ 332 44 33 22 33 55 33 211 .....
      [ 823 44 12 98 19 23 32 911 .....
      ....
      ....
    ]

我们想要

 C = [ [ 332 22 ...
       [ 823 98 ...
       ....
       ....
     ]

首先,您要
repmat
逻辑向量,使其与矩阵
A
的大小完全相同

idx2keep = repmat(b, [1 4]); % Or [4 1] depending on if it's a col or row vector
然后,您可以简单地使用

 B = A( idx2keep )
然后可以将其转换为列向量:

 B = B(:)

这应该可以完成任务。下次请务必发布一些代码或符号,以便更容易、更清楚地回答此问题。

首先,您要
repmat
逻辑向量,使其与矩阵
A
的大小完全相同

idx2keep = repmat(b, [1 4]); % Or [4 1] depending on if it's a col or row vector
然后,您可以简单地使用

 B = A( idx2keep )
然后可以将其转换为列向量:

 B = B(:)
这应该可以完成任务。下次请始终发布一些代码或符号,以便更容易、更清楚地回答此问题。

您应该使用:

你应使用:


看一看,我认为您正在寻找一种形式的逻辑索引。看一看,我认为您正在寻找一种形式的逻辑索引。
repmat
?您是否听说过
bsxfun
?在这种情况下如何使用bsxfun?此外,此解决方案确实返回1x(4n)数组,而不是4xn数组。
repmat
?您是否听说过
bsxfun
?在这种情况下如何使用bsxfun?此外,此解决方案确实返回1x(4n)数组,而不是4xn数组。简明、正确,如果您不理解语法+1,则返回一个引用。简明、正确,如果您不理解语法+1,则返回一个引用。