MATLAB Answers


How to re-size a vector with new element obtained from old ones?

Asked by Ayob
on 20 Apr 2013

I need to create a new vector which is re-sized type of a vector and it's elements are obtained from previews vector.

for example:

V1=[1 3 9 11]

As you can see vector V2 is made of vector V1. Each element of vector V1 in a special mode.

How can I write a code that build up V2 from V1 and be fast at the same time because I should do it several times and time is important to me.


What's wrong with the way you're doing it? Just replace 1 by V(1), 3 by V(2), 9 by V(3), and 11 by V(4). Should be faster than a rocket powered, greased cheetah on steroids.

on 2 May 2013

It's ugly and bring about much difficulty to check it when you have a large program like mine.


No products are associated with this question.

2 Answers

Answer by per isakson
on 20 Apr 2013

This is my best guess:

    V1=[ 1, 3, 9, 11 ];
    V2  = [ 3*V1(1)-2, 3*V1(1)-1, 3*V1(1)-0 ...
        ,   3*V1(2)-2, 3*V1(2)-1, 3*V1(2)-0 ...
        ,   3*V1(3)-2, 3*V1(3)-1, 3*V1(3)-0 ...
        ,   3*V1(4)-2, 3*V1(4)-1, 3*V1(4)-0 ];
>> V2
V2 =
     1     2     3     7     8     9    25    26    27    31    32    33

I submit this to learn if I'm correct so far. Can V1 take any length?

  1 Comment

Hi. what about

V1=[1 3 9 11];

Answer by Jan Simon
on 2 May 2013
Edited by Jan Simon
on 2 May 2013

V1 = [1, 3, 9, 11];
a  = [2, 1, 0];
V2 = reshape(bsxfun(@minus, V1, a(:)), 1, []);


Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!