0

我有一个以下矩阵

 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'小于'y'时它应该包含'x'的所有值,然后用'填充'z'你'。'z' 的输出如下所示。

z =

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

3 回答 3

5

z = max(x, y)

小心NaN,因为它既不小于、也不大于也不等于任何数字。因此,例如,如果在一个没有的位置上x有一个,那么将始终选择 in 的值。NaNyx

于 2013-09-24T10:41:00.633 回答
1

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

z = x+y-min(x,y);
于 2013-09-24T11:39:05.190 回答
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.

于 2013-09-24T10:37:27.203 回答