基于限制在matlab中创建一个新的向量

时间:2013-09-24 10:31:09

标签: matlab data-analysis

我有一个跟随矩阵

 aa =
  245.2708    2.6912   21.0000
  245.2778    2.3969   21.0000
  245.2847    4.9097   21.0000
  245.2917    5.5113   21.0000
  245.2986    6.9260   21.0000
  245.3056   20.5392   21.0000
  245.3403   40.6676   21.0000
  245.3472   28.8638   21.0000
  245.3542   45.3048   21.0000
  245.3611   47.9512   21.0000
  245.3681   NaN       NaN
  245.3889   15.3675   21.0000
  245.3958   15.0250   21.0000

 Time =aa(:,1);
 x    =aa(:,2);
 y    =aa(:,3);

现在我需要创建一个新的向量'z',当'x'大于'y'时它应包含'x'的所有值,如果'x'小于'y',则填充'z' '与'y'。 'z'的输出看起来如下。

z =

  21
  21
  21
  21
  21
  21
  40.6676
  28.8638
  45.3048
  47.9512
  NaN
  21
  21

3 个答案:

答案 0 :(得分:5)

z = max(x, y)

小心NaN,因为它既不低也不高,也不等于任何数字。因此,例如,如果xNaN没有y的位置x,那么{{1}}中的值将始终被选中。

答案 1 :(得分:1)

如果您希望输出为NaN,如果任一值为NaN,您可以使用

z = x+y-min(x,y);

答案 2 :(得分:0)

z = zeros(size(x));
idx_x = x>y;
idx_y = x<y;
z(idx_x) = x(idx_x);
z(idx_y) = y(idx_y);

请注意,这并不考虑xy何时相等,而且我不确定您是否可以将数字与NaN进行比较。