将向量保存在符合真实语句的数组中

时间:2015-03-13 23:49:20

标签: matlab

基本上我正在创造各种职位。我想将位置保持在一个声明为真的数组中。我是MATLAB的新手,所以请原谅新手的问题。我花了一段时间寻找这个问题的答案,所以现在我转向董事会寻求帮助。 :/

例如......在这里,我想保留所有遵守“外部”的行。

Outside = [];
Position = [1 1 1; 1 2 2; 3 3 3; 3 4 4];
sq_dist = sum(Position.^2);
Outside = sq_dist>12;

我曾尝试过for循环:

for outside = 1
Outside = [];
Position = [1 1 1; 1 2 2; 3 3 3; 3 4 4];
sq_dist = sum(Position.^2);
Outside = sq_dist>12;
end

但它似乎没有用。所做的就是产生遵守声明的相应立场。 (所以一系列的1和0)。我也尝试过:

Outside = [];
Position = [1 1 1; 1 2 2; 3 3 3; 3 4 4];
sq_dist = sum(Position.^2);
Outside = sq_dist>12;
Position = Position(Outside == 1)

但上面只给出了第一列,我需要整行。

有人会介意帮我吗?

1 个答案:

答案 0 :(得分:0)

对于简单条件,您可以执行以下操作:

v = [1 2 3 4 5 6 7 8];
v1 = v(v>5); %keep values greater than 5

在您的情况下,您可以按如下方式找到平方距离

sqr_pos = sum(position.^2, 2);

因为sum将返回列的总和,所以你必须告诉它沿着行加总。

然后你可以按照以下方式找到你球体之外的东西

positions_outside = position(sqr_pos > 12, :);

其中:表示所有列(x, y, z)

编辑: 你可以在一行中完成:

position_outside = position(sum(position.^2, 2)>12, :);