基本上我正在创造各种职位。我想将位置保持在一个声明为真的数组中。我是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)
但上面只给出了第一列,我需要整行。
有人会介意帮我吗?
答案 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, :);