Могу ли я создать вектор v3 = [1,100,2,99,3,98, ..., 100,1], используя только двоеточие?
Мне удалось создать его только с помощью цикла.
Попробуй это.На этой машине нет MATLAB, поэтому извиняюсь, если она не работает полностью.
vforward = [1:100]; vback = [100:-1:1]; vtot = [vforward; vback]; vtot = vtot(:)
Это лучшее, что я мог бы сделать в воскресенье утром:
cumsum([1, ((-1).^(mod(0:198,2))).*(99:-1:-99)])
Единственное достоинство других ответов в том, что это однострочник.Что не может быть большой заслугой.
Альтернативная версия, не требующая изменения формы:
v3 = zeros(1,200); v3(1:2:end) = 1:100; v3(2:2:end) = 100:-1:1; %# or: fliplr(v3(1:2:end))