arrays - 根据其内容将向量拆分为多个向量

标签 arrays matlab vector

我有一个向量,我知道它将由值 100、200 和 400 组成。这些值不会混淆,但会按顺序排列,例如

target = [100 100 100 100 200 200 400 400 400];

我想将这个向量分成三个向量,每个向量包含该类型的所有值。

A = [100 100 100 100];
B = [200 200];
C = [400 400 400];

target的长度会不时变化,100、200、400的比例也会不时变化。

如何以简单的方式进行拆分?

我自己的解决方案看起来像这样,但我在想还有另一种需要更少代码的方法。

columns = size(target, 2);

A = [];
B = [];
C = [];
% Splitting target into groups
for j = 1:columns
    if target(1, j) == 100
        A = [A, 100];
    elseif target(1, j) == 200
        B = [B, 200];
    elseif target(1,j) == 400
        C = [C, 400];
    end
end

最佳答案

更简单的东西:

target=[100 100 100 100 200 200 400 400 400];

A = target(target==100)
B = target(target==200)
C = target(target==400)

工作原理:target==x 返回大小等于 target 的逻辑数组。然后您可以使用该逻辑数组来索引 target

关于arrays - 根据其内容将向量拆分为多个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30919693/

相关文章:

java java.lang.reflect.Array.getLength 与 array.length

excel - 如何将matlab答案导出到excel?

Matlab:无法使用imfindcircles找到圆

matlab - 将 fminunc 应用于 costFunction 进行逻辑回归

c++ - vector 的重新分配是否会导致父 vector 的重新分配?

c# - 路径动画

Java Streams 返回抛出错误 意外的返回值

javascript - JS环境第0行脚本错误

arrays - D 中的向量和动态数组

python - 在 Python 2.7.3 中将字段名称分配给 numpy 数组