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

New to MATLAB?

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

Asked by Ayob

Ayob (view profile)

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.


Image Analyst

Image Analyst (view profile)

on 20 Apr 2013

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.


Ayob (view profile)

on 2 May 2013

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


Ayob (view profile)


No products are associated with this question.

2 Answers

Answer by per isakson

per isakson (view profile)

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

Zhang lu

Zhang lu (view profile)

on 2 May 2013

Hi. what about

V1=[1 3 9 11];
per isakson

per isakson (view profile)

Answer by Jan Simon

Jan Simon (view profile)

on 2 May 2013
Edited by Jan Simon

Jan Simon (view profile)

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


Jan Simon

Jan Simon (view profile)

Contact us