Нет встроенной функции, о которой я знаю, но вот одно решение:
index = zeros(1,sum(b));
index([1 cumsum(b(1:end-1))+1]) = 1;
c = a(cumsum(index));
Сначала вектор нулей создается той же длины, что и выходной массив (т. е. сумма всех реплик в b
). Затем они помещаются в первый элемент и каждый последующий элемент, представляющий, где начинается начало новой последовательности значений. Затем кумулятивную сумму вектора index
можно использовать для индексации в a
, повторяя каждое значение желаемое число раз.
Для ясности это то, что выглядят различные векторы для значений a
и b
, заданных в вопросе:
index = [1 0 1 0 1 1 0 0]
cumsum(index) = [1 1 2 2 3 4 4 4]
c = [1 1 3 3 2 5 5 5]
EDIT: Для полноты имеется другая альтернатива, использующая ARRAYFUN , но, похоже, это займет от 20 до 100 раз больше времени, чем указанное выше решение с векторами длиной до 10 000:
c = arrayfun(@(x,y) x.*ones(1,y),a,b,'UniformOutput',false);
c = [c{:}];
Это потому, что cglib помечен как необязательная зависимость .
По сути, вам не нужен cglib для каждого использования библиотеки spring-aop, поэтому maven не загружает ее автоматически. К сожалению, это нужно указывать вручную.
Я немного запутался ... Maven - это диспетчер зависимостей ... Почему он не загружает cglib, когда я использую модуль spring-aop ?
Поскольку не все используют CGLIB (прокси AOP в Spring может быть динамическим прокси JDK или прокси CGLIB), CGLIB помечен как необязательная зависимость в pom spring-aop , и вы должны добавить его явно, если хотите его использовать. Это как раз то, для чего нужны необязательные зависимости.
Другой похожий пример - Hibernate, который позволяет вам одинаково выбирать между cglib и javassist в hibernate-core . Hibernate также позволяет вам выбирать между различными пулами соединений (если вы решите использовать один из них) или поставщиками кеша (только ehcache, установленный по умолчанию, не объявлен как необязательный).
Я предполагаю, что cglib не включен в Spring по умолчанию . И поэтому он не включен в pom, если вы явно не включите его.
Насколько мне известно, Maven не может войти в ваши файлы конфигурации Spring и определить, нужны ли ему дополнительные необязательно включенные библиотеки. Хотя это определенно звучит так, как будто это был бы крутой плагин Spring-Maven, если бы можно было изменять pom на лету через плагин. Не уверен, что это так, но было бы круто.