Как мне ввести элементы с определенными индексами в массиве Matlab без цикла? - PullRequest
0 голосов
/ 02 июля 2019

Я удаляю элементы массива x по определенным показателям.

x=rand(10,1);
delInd=[8 5];   
delInd=sort(delInd); %delInd must be sorted for this to work
x(delInd)=[];

Далее я вычисляю другой массив, используя x.

y=x+1;

Теперь я хотел бы разместить новые элементы, скажем, inf, в y, напримерчто новые элементы соответствуют позициям удаленных элементов в оригинале x.Я делаю это, используя следующий код:

for ii=delInd'
   y=[y(1:ii-1);inf;y(ii:end)];
end

Можно ли векторизовать приведенные выше строки и выполнить их без цикла for или без сортировки?

1 Ответ

0 голосов
/ 02 июля 2019

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

Например, вы можете просто заменить элементы следующим образом:

originalArr = 1:10;
replaceInd = [3 4 7 10];
replaceArr = [100 101 102 103];

originalArr(replaceInd) = replaceArr;

теперь originalArr будет содержать

1 2 100 101 5 6 102 8 9 103
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...