аргумент на 2 вектора без использования для циклов - PullRequest
0 голосов
/ 29 октября 2018

у меня 2 вектора

  A=[10 22 31 14 55 16 47 18];
  B= [1 2 1 1 1 2 1 2];

Я хочу создать третий вектор C, который содержит значения A для значений B = 1; как

 C=[10 NaN 31 14 55 NaN 47 NaN]

или

C=[10 31 14 55 47]

Я сделал это с помощью цикла for. Просто хочу узнать, выполнимо ли это без использования цикла for, так как это может сэкономить много вычислительного времени. (Векторы со мной действительно очень большие

for i=1:length (A);
  if B(i)==1;
  C(i)=A(i)
  else C(i)=NaN;
  end;
  end;

1 Ответ

0 голосов
/ 29 октября 2018

использовать логическую логику для индексации. В вашем случае, как вы также предлагаете, вы можете сделать это с помощью простого

C = A(B==1);

Для более сложных условий вы также можете использовать функцию find () , как в

C = A(find(B==1));

или

C = nan(size(A));
C(find(B==1)) = A(find(B==1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...