2016-06-28 2 views
0

Эй, ребята, я хочу сделать добавить два вектора, следующее должно произойтивекторизация два вектора в MATLAB

Vec1 = [1 3 5 7 9] 
Vec2 = [2 4 6 8] 


Vec = Vec1 + Vec2 = [1 2 3 4 5 6 7 8 9] 

Таким образом, г-й номер vec2 должен находиться между г-й и я + 1 индекс vec1

Я попытался сделать это, используя цикл for и используя четную и нечетную индексацию. Однако это не сработало.

Кроме того, делать это вручную не является вариантом. Реальные векторы, которые я использую, довольно большие.

У кого-нибудь есть подсказка? или знает, как это сделать?

Спасибо, ребята!

+0

только общее примечание, этот вопрос ответил так много раз сейчас, так что это либо то, что люди не ищут правильные слова, потому что используемые термины неправильны или неопределенны (например, название этого вопроса), или что им нужен личный контакт от кого-то, чтобы ответить на них ... – bla

ответ

2

Мы бы назвали это конкатенация не дополнение. Вы хотите назначить vec1 всем нечетным местоположениям нового вектора и vec2 ко всем четным местоположениям. Мы можем это сделать.

% We can pre-allocate the output 
new = zeros(1, numel(vec1) + numel(vec2)); 

% Assign vec1 to all of the odd locations (all other slots remain 0) 
new(1:2:(numel(vec1)*2)) = vec1; 

% Assign vec2 to all of the even locations 
new(2:2:(numel(vec2)*2)) = vec2; 

% 1 2 3 4 5 6 7 8 9 

Если vec1 и vec2 имеют тот же размер, мы можем просто использовать cat с последующим reshape.

new = reshape(cat(1, vec1, vec2), 1, []) 
0

Вы можете сделать это:

Vec1 = [1 3 5 7 9] 
Vec2 = [2 4 6 8] 

vec = [vec1 vec2] 
sort(vec) 

Результатом будет два вектора соединяется и отсортированный:

[1 2 3 4 5 6 7 8 9] 
+3

Я уверен, его значения, используемые OP, просто для иллюстрации. –

Смежные вопросы