仅当向量1的值大于0时,如何选择向量2的值

时间:2018-06-07 12:05:12

标签: matlab

假设我有两个向量:

V1 = [0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1]

和矢量

V2 = [23 24 23 45 46 2 3 48 49 50 24 23 24 24 47 46]

如何创建矢量输出V3(如下所示)其中:如果Vector V1的值= 0,那么V3的相应值= Nan,如果V1 = 1而不是V3 = V2。

V3 = [NaN NaN NaN 45 46 NaN NaN 48 49 50 NaN NaN NaN NaN 47 46]

提前谢谢你 DM

2 个答案:

答案 0 :(得分:1)

您可以使用find查找V1中非零元素的索引。

您的意见:

V1 = [0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1];
V2 = [23 24 23 45 46 2 3 48 49 50 24 23 24 24 47 46];

创建矢量V3:

V3 = V1;

%Logical indexing for adding NaN.
V3(~V1) = NaN;

%Find indexes for non-zero V1.
indx = find(V1);

%Use indexes for filling V3 with respective values in V2.
V3(indx) = V2(indx);

输出V3:

V3 = [NaN   NaN   NaN    45    46   NaN   NaN    48    49    50   NaN   NaN     NaN   NaN    47    46]

有关如何使用逻辑进行数组索引的更多信息,请阅读documentation

答案 1 :(得分:1)

V3初始化为V2,然后使用逻辑索引替换V3的相应索引为V1的{​​{1}}的索引。

NaN