как выбрать значения вектора 2 только когда значения вектора 1 больше 0 - PullRequest
0 голосов
/ 07 июня 2018

Допустим, у меня есть два вектора:

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 (как показано ниже) где: если значениеВектор 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 голосов
/ 07 июня 2018

Инициализируйте V3 как V2, затем замените индексы V3, для которых соответствующие индексы V1 имеют нули, на NaN, используя логическое индексирование.

V3 = V2;
V3(~V1) = NaN;
0 голосов
/ 07 июня 2018

Вы можете использовать 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]

Для получения дополнительной информации об использовании логики для индексации массива прочитайте документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...